2016-07-29 4 views
1

Im Storyboard habe ich eine ViewController namens home.Initiiere eine Funktion wenn und nur wenn ein CGPoint für 2 Sekunden in einer Ansicht ist

Haus hat eine rote UIView als Unteransicht und befindet sich im Zentrum von Home.

Die rote Ansicht hat eine LongPressGestureRecognizer, die der Benutzer bei Aktivierung die rote Ansicht um den Bildschirm verschieben kann.

Wenn der Benutzer die rote Ansicht nahe genug auf die linke Seite des Bildschirms bewegt, erscheint ein UIViewSidebar.

Innerhalb der Sidebar sind n einzigartig gefärbt subviews.

Wenn ein Benutzer die rote Ansicht innerhalb des Rahmens der farbigen Unteransichten bewegt, ändern sich die Farben mix und die Farbe in der Seitenleiste, die die rote Ansicht berührt, ändert sich. Es ändert sich in die Mischung.

`

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 
*/ 

` Während der Benutzer Manövern die Sidebar, will ich nicht zufällige Vermischung.

Also ich möchte eine Überprüfung Bedingung. Rot sollte genau dann mischen, wenn der Touchpoint 2 Sekunden lang in einer farbigen Ansicht enthalten war.

+0

nur raus kommt in 'thumbnailTrackTouchPoint' Sie einen Parameter speichern Datum hinzufügen könnte, die nur auf geändert auftritt, und Wenn es außerhalb des Limits liegt, wird es gelöscht, entweder weise. Dann können Sie überprüfen, ob der Unterschied länger als 2 Sekunden ist. – Larme

+0

in Methode, die ausgeführt wird, wenn Sie Bereich Feuer geplanten Timer mit Methode zum Mischen eingeben, in der Methode, die ausgeführt wird, wenn Sie aus diesem Bereich nur ungültig Timer, wenn es nicht bereits ein Null ist –

Antwort

1

Initiieren eines geplanten Timer, wenn der Punkt Ansicht

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

und wenn CGPoint Sie

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