Nowe zachowanie w systemie iOS 5.1 związane z aplikacjami UISplitViewController
wydaje się przechwytywać ruch UISlider
z niepożądanymi wynikami. Może to również dotyczyć elementów sterujących i dowolnej innej powierzchni sterującej, która obsługuje gesty od lewej do prawej.Przeniknięcie iOS 5.1 gestem porwanym przez UISplitViewController - jak uniknąć?
Przy ustawieniu UISplitView
w orientacji pionowej widok główny jest zwykle ukryty. Zaczynając od systemu iOS 5.1, prawe przesunięcie ekranu wyświetla widok główny po lewej stronie urządzenia. Problem polega na tym, że przesuwanie kciuka mojej kontrolki UISlider jest źle interpretowane jako przesunięcie ekranu: jeśli dam kciukowi UISlider ostry nacisk w prawo, pojawi się panel Master.
W mojej aplikacji występują niepożądane efekty uboczne (i problemy z wydajnością) z uzupełnianiem widoku głównego.
Uważam to zachowanie za błąd Apple. Wszelkie pomysły, jak to obejść? Czy mogę w jakiś sposób przekonać gest i przetworzyć go, nie przekazując go do łańcucha odpowiadającego?
Z góry dziękuję za wszelki wgląd!
dzięki @Dimitris Tavlikos. Podczas gdy nadal uważam, że Apple wprowadził do tego błąd (UIControls takie jak UISlider nie powinien konkurować z UISplitViewController przez ten gest), istnieje proste obejście: 'splitViewController.presentsWithGesture = NO; // SplitView nie rozpozna prawego przesunięcia' Co to jest w przypadku zamieszczania pytania, które powoduje, że nagle znajdziesz odpowiedź w innym miejscu? – jbbenni
Co się stanie, jeśli chcę zachować domyślną funkcjonalność gestu na wzorcu, ale wyłączam ją tylko wtedy, gdy suwak się porusza? Ustawienie 'presentsWithGesture' na' no' wyłącza gesty wszędzie. – Mark13426
Nie nastąpi. Suwak nie porusza się, ponieważ gest jest przechwytywany przed rozpoczęciem ruchu suwaka. Nie można wyłączyć przejęcia tylko podczas ruchu suwaka, ponieważ suwak nawet nie zaczyna się poruszać. Jest to długi strzał, ale może istnieć sposób przechwycenia gestu przed przetwarzaniem, a następnie ustalenie, czy ruch suwaka zostałby rozpoczęty, i wyłączenie porwania w takim przypadku. Ale to trudne. Hierarchia przetwarzania zdarzeń działa przeciwko tobie, ponieważ system operacyjny najpierw pęka po tym gestie. – jbbenni