2012-03-13 13 views
12

Un nuovo comportamento in iOS 5.1 correlate a UISplitViewController applicazioni sembra essere intercettare UISlider movimento con risultati indesiderati. Questo potrebbe essere applicato anche ai controlli UISegmented e qualsiasi altra superficie di controllo che gestisca i gesti da sinistra a destra.iOS 5.1 gesto di strisciamento dirottato da UISplitViewController - come evitare?

Con un UISplitView in orientamento verticale, la vista Master è normalmente nascosta. A partire da iOS 5.1, lo scorrimento a destra sullo schermo fa apparire la vista master sul lato sinistro del dispositivo. Il problema è che, scorrendo il pollice del mio controllo UISlider, viene erroneamente interpretato come uno scorrimento dello schermo: se conferisco a UISlider thumb una spinta acuta a destra, viene visualizzato il pannello Master.

Nella mia app, non ci sono effetti collaterali indesiderati (e problemi di prestazioni) con salagione la vista Maestro.

Considero questo comportamento un bug di Apple. Qualche idea su come aggirarla? Posso in qualche modo avere il UISlider catturare il gesto ed elaborarlo, senza passare la catena di risposta?

Grazie in anticipo per qualsiasi comprensione!

+10

grazie a @Dimitris Tavlikos. Mentre credo ancora che Apple abbia introdotto un bug (UIControls come UISlider non dovrebbe competere con UISplitViewController per questo gesto), c'è una soluzione facile: 'splitViewController.presentsWithGesture = NO; // SplitView non riconoscere il diritto swipe' cosa si tratta di inviare una domanda che ti fa trovare improvvisamente la risposta altrove? – jbbenni

+0

Cosa fare se si desidera mantenere la funzionalità di gesture predefinita sul master ma disabilitarla solo quando il cursore si sposta? Impostare 'presentsWithGesture' su' no' disabilita il gesto ovunque. – Mark13426

+0

Non succederà. Il cursore non si sposta perché il gesto viene intercettato prima che il cursore inizi a muoversi. Non puoi solo disabilitare l'hijack mentre il cursore è in movimento, perché il cursore non inizia nemmeno a muoversi. È un campo lungo, ma potrebbe esserci un modo per intercettare il gesto prima dell'elaborazione, quindi determinare se avrebbe avviato lo slider in movimento e disabilitare il dirottamento in quel caso. Ma è difficile. La gerarchia dell'elaborazione degli eventi sta funzionando contro di te, dal momento che il sistema operativo subisce il primo crack al momento. – jbbenni

risposta

9

Apple ha confermato la questione come un duplicato di un bug precedentemente riportato che è attualmente sotto inchiesta (ID Bug # 10.170.209).

La soluzione sembra funzionare bene per ora.

Problemi correlati