2013-11-21 14 views
10

Ho il problema in due situazioni completamente diverse, il che rende davvero strano.Ritardo dello stato evidenziato del pulsante

  1. Situazione: UIButton come subView di un altro UIView.
  2. Situazione: UIBarButtonItem in un UIToolBar.

In entrambe le situazioni i pulsanti sono evidenziati solo dopo un leggero ritardo, circa 0,5 - 1 secondo. Decisamente a lungo per evidenziare la vista quando la si tocca normalmente. Entrambi funzionano perfettamente sul simulatore, ma non su un dispositivo reale (ho un iPhone 5s con iOS 7.0.4).

Quello che ho cercato
Impostazione del zPosition al valore più alto (MAXFLOAT) di questi punti di vista, al fine di garantire nulla blocchi il rubinetto.
Attivazione esplicita dell'evidenziazione.

Entrambi, ovviamente, non hanno funzionato.

Modifica: ancora non risolto.

+0

Non stai facendo qualcosa come le chiamate server sul thread principale quando tocchi questi pulsanti? Ciò potrebbe causare un ritardo nel momento saliente. Dovresti fare quelle chiamate in background se sì. – FabKremer

+0

è evidenziare un'immagine in formato png? –

+0

Immagino che stai facendo un lavoro pesante quando tocchi quei pulsanti. Il rendering delle immagini sta funzionando sul thread principale. Puoi controllare la funzione IBAction per i pulsanti. – Joey

risposta

0

Gli UIButton sono all'interno di UIScrollView? Se lo sono, il ritardo è lì così la scrollview può determinare se il tocco è per lo scorrimento o dovrebbe essere passato alla sottoview.

Vedi anche UIButton touch is delayed when in UIScrollView

+0

No. Inoltre: mi sono assicurato che non ci fossero e ne ero completamente consapevole. – Leandros

0

So che è passato molto tempo, ma ho appena affrontato un problema simile:

  • mio UIButton è una visualizzazione secondaria di UINavigationController.view
  • Non c'è alcun ritardo sul simulatore
  • Ma c'è un ritardo per mostrare l'evidenziazione sul dispositivo

Ho appena scoperto che succede solo se eseguo l'app da Xcode. Se disconnetto il dispositivo e apro l'app dalla sua icona, tutto funziona perfettamente.

Spero che aiuti.

2

Ciò può accadere se i pulsanti sono posizionati vicino al bordo inferiore del display. C'è un conflitto con il gesto del bordo del sistema per presentare Control Center (o App Switcher su iPhone X e iPad). Ritarda i ritocchi per i pulsanti fino a quando non viene determinato che l'utente non sta eseguendo un gesto di sistema.

Se lo desideri, puoi dire al sistema di dare la precedenza ai tuoi gesti sui gesti del sistema.

override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge { 
    return .bottom 
} 

Si noti tuttavia che questo richiederà all'utente di passare due volte per attivare il gesto di sistema.

Problemi correlati