2014-05-01 8 views
9

Mają spuścizna UISplitViewController iPada aplikację, która wyświetla modalne widok z „prawa strona” okienku VC korzystając presentViewController: animowane: Zakończenie: z modalPresentationStyle zestaw do UIModalPresentationFormSheet. W wersji viewDidAppear widoku VC modalnego widoku wywołujemy funkcję stałoponieważ na UITextField. W iOS6 powoduje to wyśrodkowany widok modalny przesuwający się w górę od dołu, który następnie skupia KB. Jednak od czasu iOS7, co następuje po przesunięciu widoku od dołu, przesuwa się w prawo o około (szacując) 200 punktów. Dziwne jest to, że jeśli odrzucisz klawiaturę, widok zniknie z powrotem do położenia środkowego, tak jak na iOS6. Od tego momentu, podczas gdy widok modalny jest podniesiony, fokus KB powoduje, że pozostaje on wyśrodkowany i tylko nieznacznie się wysuwa, co jest normalnym zachowaniem iOS dla widoków modalnych nie pełnoekranowych. To tak, jak odrzucisz KB, gdy tylko "poprawi się" od tego momentu. Mam eksperymentował i stwierdził, że:iOS7 FormSheet widok modalne przesunięcia do prawej strony boiska KB naciskiem kiedy animowane

  1. Jeśli ustawisz animated na NIE dla wywołania presentViewController działa jak iOS6.
  2. Jeśli nie zadzwonisz pod numer becomeFirstResponder, działa on jak iOS6.
  3. Jeśli zadzwonisz pod numer performSelector:xxxxafterDelay:0, przekazując becomeFirstResponder jako selektor, zamiast bezpośrednio wywoływać becomeFirstResponder, działa to również jak iOS6.

Wariant 3 z góry jest obecnie moja idź naprzód obejście, ale moje pytanie brzmi: czy jest to bug iOS7, albo robimy coś złego, że był oczywiście ok w 6, ale nie w iOS7?

Występuje tylko po iOS7. Odtwarzany tylko raz na symulatorze, ale w 100% na urządzeniu testowym (iPad mini). Z przeprowadzonych przeze mnie obecnie moich najlepszych przypuszczeń (zakładając, że nasz kod nie jest winny post-iOS7) jest błąd typu warunku wyścigowego między animacjami klawiatury a widokiem przesuwającym się od dołu w warstwie interfejsu użytkownika iOS co powoduje, że widok przesuwa się w prawo zamiast w górę, jak zwykle, gdy widok nie pełnoekranowy jest prezentowany modalnie, a KB jest pop-up. Mam tę teorię po przeczytaniu this similar SO question.

+0

HA! Właśnie natknąłem się na ten przedmiot około godzinę temu. Cieszę się, że to nie jest coś, co zrobiłem w kodzie. :) Dzięki za wskazówki dotyczące rozwiązania tego. Napisz swoje pytanie. –

Odpowiedz

14

Miał ten problem. Jest to z pewnością błąd w iOS7.X. (Powinieneś otworzyć zgłoszenie błędu w Apple!). Co się dzieje, to Apple ma błąd w obliczeniach układu i przesuwa modalnie prezentowany widok.

Użyliśmy

dispatch_async(dispatch_get_main_queue(), ^{ [view becomeFirstResponder]; }); 

przezwyciężyć ten problem, który jest podobny do # 3. Spowoduje to opóźnienie pojawienia się klawiatury, aż do układu widoku, przezwyciężając problem.

+0

Thx za potwierdzenie! Grr, nienawidzę tych hacków iOS, które musimy obejść ... – stonedauwg

+0

@Leo Dodałem to w viewDidLoad i viewDidAppear dla przedstawionego kontrolera widoku. Nie działało. Gdzie to dodałeś? – GoodSp33d

Powiązane problemy