Per diversi anni ho operato partendo dal presupposto che se una superview e la sua sottoview avevano entrambi riconoscimenti di gesti, la sottoview avrebbe ricevuto i primi tocchi e annullato il gesto della superview. Fino a iOS 7 questa ipotesi non mi ha mai deluso, permettendomi di aggiungere gesti alle sottoview confidando che i gesti della superview non interferirebbero. Ma in iOS 7, la superview riceverà casualmente i tocchi e annulla i gesti della subview. Questo accade un po 'di rado, il che ha reso difficile individuare il problema.Il gesto di superview dovrebbe annullare il gesto di subview in iOS 7?
Ho riscontrato questo problema per la prima volta come pulsanti che non è stato possibile utilizzare utilizzando UITapGestureRecognizer
... di nuovo, molto raramente. Di solito i pulsanti funzionavano finché non lo facevano. Ti ha fatto mettere in discussione la tua sanità mentale. Così ho lanciato il mio TapGestureRecognizer
e ho scoperto che i rubinetti delle superview stavano cancellando i rubinetti della loro sottoview occasionalmente. Non è mai stato fatto in nessuna versione precedente di iOS, ma mi chiedo se questo comportamento non sia mai stato promesso.
Ho pensato che il gesto della subview avrebbe dovuto annullare il suo gesto di superview (se non diversamente specificato da un delegato). È sbagliato o è un bug?
Nota: Non sto chiedendo come gestire la situazione. Sto chiedendo se qualcuno sa se la mia ipotesi è sbagliata. Sto già riorganizzando le visualizzazioni, aggiungendo/rimuovendo dinamicamente i gesti e creando implementazioni piuttosto complesse di gestureRecognizer:shouldReceiveTouch:
per rimediare alla situazione. Non è divertente, ma posso aggirare il problema.
Avete ricevuto qualche feedback su questo dalla nave madre? Sarebbe più carino avere un mezzo/protocollo più chiaro per stabilire l'ordine. (E grazie per il tuo post) –
No, non proprio. Il radar che ho presentato è stato infine rimosso come "comportamento previsto". Tuttavia, ho notato nelle versioni più recenti di iOS che non ho visto il problema apparire così ho il sospetto che qualcosa fosse stato risolto internamente. –
Roba buona! Ora mi trovo a dare una lunga prefazione su come il bug che sto descrivendo non potrebbe mai essere considerato ragionevole da una persona sana di mente, e cercando di chiarire il punto che il previsto non è lo stesso di quello corretto. Ho anche avuto bug tornare come previsto, e in seguito risolto - non sono sicuro di come ciò accada. Ancora una volta nella breccia! ;-) –