2016-07-29 2 views
1

В раскадровке у меня есть ViewController, называемый домом.Инициировать функцию тогда и только тогда, когда CGPoint находится в пределах просмотра в течение 2 секунд

Дом имеет красный UIView в качестве подсмотра и расположен в центре дома.

Red View имеет LongPressGestureRecognizer что при активации пользователь может перемещать красный вид вокруг экрана.

Когда пользователь перемещает красный вид достаточно близко влево от экрана, вылетает UIViewSidebar.

В боковой боковой панели: уникально цветной subviews.

Когда пользователь перемещает красный вид в обрамлении цветных подвидов, цвет mix и цвет на боковой панели, что красный вид прикоснулись меняют цвета. Он меняется в миксе.

`

func handleAuditioneeLongPress(sender: UILongPressGestureRecognizer) { 
     switch sender.state { 
     case .Began: 
      hideSideBar() 
     case .Changed: 
      let touchPoint = sender.locationInView(self.view) 
      thumbnailTrackTouchPoint(touchPoint) 
     case .Ended: 
      let dropPoint = sender.locationInView(self.view) 
      thumbnailWasDropped(dropPoint) 
     default: 
      break 
     } 
    } 
func thumbnailTrackTouchPoint(touchPoint: CGPoint){ 
     UIView.setAnimationsEnabled(true) 
     UIView.animateWithDuration(0.03, delay: 0.0, options: [.BeginFromCurrentState, .CurveEaseOut], animations: { 
       self.red.center.x = touchPoint.x 
      self.red.center.y = touchPoint.y - 50 
      }, completion: nil) 
    if touchPoint.x < 30{ 
     showSidebar() 
     isSidebarOut = true 
     } 
    if isSidebarOut { 
      if touchPoint.x > 135 { 
       hideSideBar() 
       isSidebarOut = false 
      } 

      let location = self.view.convertPoint(touchPoint, toView: sidebar) 
      let subview = sidebar.hitTest(location, withEvent: nil) 
      if(subview != nil) { 
      if let coloredIconController = self.sidebarController.viewToColoredIconController[subview!] 


/* 
if coloredIconController.view.frame.contains(location) for more than 2 seconds mix the colors 
*/ 

` Хотя маневры пользователей на боковой панели, я не хочу случайное смешивание.

Так что я хочу проверить состояние. Красный должен смешиваться тогда и только тогда, когда сенсорная точка содержалась в цветном виде в течение 2 секунд.

+0

В 'thumbnailTrackTouchPoint' можно добавить параметр сохранения даты, которое происходит только изменились, и если он выходит за пределы, он удаляется, либо мудрый набор. Затем, когда вы закончите, вы можете проверить, является ли разница более 2 секунд. – Larme

+0

в методе, который запускается, когда вы вводите заданный таймер огненной области с помощью метода для смешивания, в методе, который запускается, когда вы выходите из этой области, просто отменяет таймер, если он еще не равен нулю –

ответ

1

Инициировать запланированный таймер, когда точка входит Просмотреть

myTimer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: "mixing method", userInfo: userInfo, repeats: false) 

и когда CGPoint выйти вам только

if myTimer != nil { 
    myTimer.invalidate() 
}