2015-11-16 7 views
5

Sto creando una tastiera personalizzata e mi trovo in una situazione davvero strana.iOS: perché toccaBegan ha qualche ritardo in alcune aree specifiche di UIView

Ho notato che quando rilevo l'evento toccaBegan sul retro a sinistra (circa 20 pixel) di UIView (inputView), avrò un po 'di ritardo qui. Qualsiasi azione che faccio in touchBegan sarà più lenta di altre aree.

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) 
{ 
self.keypop.hidden = false 
} 

override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { 
{ 
self.keypop.hidden = true 
} 

E questo problema riguarda le prestazioni della mia app. In questo esempio, non vedrò apparire il keypop quando ho toccato il lato posteriore sinistro perché self.keypop.hidden è stato ritardato nel mostrare.

Non so perché, o si tratta di un errore da iOS 9? Sono stato bloccato su questo problema per una settimana.

risposta

3

La risposta qui sembra aver risolto lo stesso problema nella nostra tastiera:

UISystemGateGestureRecognizer and delayed taps near bottom of screen

Con il seguente codice:

override func viewDidAppear(animated: Bool) { 
    let window = view.window! 
    let gr0 = window.gestureRecognizers![0] as UIGestureRecognizer 
    let gr1 = window.gestureRecognizers![1] as UIGestureRecognizer 
    gr0.delaysTouchesBegan = false 
    gr1.delaysTouchesBegan = false 
} 
+0

non funziona –

+0

Questo mi ha salvato la vita! Ho avuto questo problema per un po 'ora con un'app SpriteKit in cui a volte ho bisogno di fare cose nella parte superiore e inferiore dello schermo, ma ha sempre avuto un comportamento strano. – CodyMace

1

Nella mia situazione ho usato touchBegan in un CollectionView e è stato ritardare i tocchi quando tocco Ha funzionato con me semplicemente aggiunto questo codice

in swi ft 3

self.view.delaysContentTouches = false 
Problemi correlati