2016-05-31 18 views
9

Ich weiß, dass Sie Berührungen mit BerührungenBegan, berührtEnded, etc. erkennen können. Das alles funktioniert. Die einzige Sache ist, dass sie nur die Berührungen auf der Ansicht selbst erkennen, nicht auf irgendetwas, das sich oben auf dieser Ansicht befindet, wie ein Textfeld.Schnelle Berührung überall auf dem Bildschirm erkennen

Mein Ziel ist es, ein Timeout nach einer bestimmten Zeit der Inaktivität zu erstellen. Die Zeitüberschreitung wird zurückgesetzt, wenn der Bildschirm berührt wird, was bedeutet, dass noch jemand die App verwendet. Es funktioniert soweit, solange sie keine Steuerelemente (wie ein Label, eine Schaltfläche, eine Textansicht usw.) berühren.

Ich könnte auch das Timeout zurücksetzen, wenn irgendwelche Kontrollen angezapft werden, aber das würde viel mehr Fälle erfordern (verschiedene Arten von Kontrollen auf verschiedenen Ansichtsteuerungen).

Ich bin auf der Suche nach und Ende-All-Screen-Tap-Erkennungsmethode. Irgendwelche Ideen?

Antwort

14

Sie können diese zu Ihrem AppDelegate hinzufügen:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
     let tapGesture = UITapGestureRecognizer(target: self, action: nil) 
     tapGesture.delegate = self 
     window?.addGestureRecognizer(tapGesture) 

     return true 
} 

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { 
     // User tapped on screen, do whatever you want to do here. 

     return false 
} 

Und auch Ihre AppDelegate zu UIGestureRecognizerDelegate Protokoll konform machen.

+0

Wie mache ich AppDelegate konform zum UIGestureRecognizerDelegate-Protokoll? – circuitry

+1

Geben Sie es einfach in Ihrer AppDelgate-Klassendeklaration ein: Klasse AppDelegate: UIResponder, UIApplicationDelegate, UIGestureRecognizerDelegate – Nati

0

Drag & Drop UITapGestureRecognizer, stellen Sie sicher, dass die gesamte Ansicht ausgewählt ist. Es wird in der obersten Zeile Ihres View-Controllers hinzugefügt und dann ein Action dafür erstellt.

Wenn Sie sicherstellen möchten, dass keine der Schaltflächen gedrückt wird, fügen Sie nach dem Ende der Inaktivität eine weitere Ansicht (transparent oder nur etwas dunkler) hinzu und verbinden Sie die mit dieser. Sobald Sie darauf geklickt haben, lassen Sie die hinzugefügte Ansicht los und setzen Sie die Aktivität fort

Verwandte Themen