2016-05-31 16 views
9

So che è possibile rilevare i tocchi utilizzando i touchBegan, touchEnded, ecc. Questi funzionano tutti. L'unica cosa è che rilevano solo i tocchi sulla vista stessa, non su qualcosa in cima a quella vista come un campo di testo.Rileva rapida tocco in qualsiasi punto dello schermo

Il mio obiettivo è creare un timeout dopo un determinato periodo di inattività. Il timeout verrà ripristinato se lo schermo viene toccato, ovvero qualcuno sta ancora utilizzando l'app. Funziona così lontano, purché non tocchi alcun controllo (come un'etichetta, un pulsante, una visualizzazione di testo, ecc.).

È anche possibile ripristinare il timeout quando si toccano tutti i controlli, ma ciò richiederebbe molti più casi (diversi tipi di controlli su diversi controller di visualizzazione).

Sto cercando e termina tutto il metodo di rilevamento dello schermo. Qualche idea?

risposta

14

È possibile aggiungere questo al tuo AppDelegate:

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 
} 

E anche fare il vostro AppDelegate conforme al protocollo UIGestureRecognizerDelegate.

+0

come faccio a rendere AppDelegate conforme al protocollo UIGestureRecognizerDelegate? – circuitry

+1

Basta digitare nella dichiarazione della classe AppDelgate come questa: classe AppDelegate: UIResponder, UIApplicationDelegate, UIGestureRecognizerDelegate – Nati

0

Trascinare e rilasciare UITapGestureRecognizer, assicurarsi che l'intera vista sia selezionata. Verrà aggiunto nella riga superiore del controller di visualizzazione, quindi creare uno Action per esso.

Se si desidera assicurarsi che nessuno dei pulsanti sia premuto, una volta trascorso il periodo di inattività, aggiungere un'altra vista (può essere trasparente o solo leggermente più scura) su di esso e collegare lo UITapGestureRecognizer ad esso. Dopo aver toccato, rilascia la vista aggiunta e riprendi l'attività.

Problemi correlati