2017-09-27 51 views
8

Mam program z jednym głównym kontrolerem widoku, który zawiera przycisk, który użytkownik może dotknąć, aby wyświetlić 4 strony "Szybkiej pomocy" za pomocą UIPageViewController. Cztery strony to QuickHelpViewController0ID - QuickHelpViewController3ID, a każdy z nich jest standardem UIViewController. Kiedy dotknij przycisku uruchomić to:Strona UIPageViewController kontroluje zbyt blisko paska głównego w telefonie iPhone X iOS 11

-(void)showQuickHelp 
{ 
    // Load the quick help page view controller 
    self.quickHelpPageVC = [self.storyboard instantiateViewControllerWithIdentifier:@"QuickHelpPageViewControllerID"]; 
    self.quickHelpPageVC.dataSource = self; 

    // Create initial quick help page 
    UIViewController *quickHelpVCA = [self quickHelpVCForPageIndex:0]; 
    NSArray <UIViewController *> *quickHelpVCs = @[quickHelpVCA]; 

    // And assign it to the page VC 
    [self.quickHelpPageVC setViewControllers:quickHelpVCs direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; 

    [self presentViewController:_quickHelpPageVC animated:YES completion:nil]; 
} // showQuickHelp: 

ja również zapewnić UIPageViewControllerDataSource stworzyć każdej z 4 stron, ile potrzeba, gdy użytkownik przewija do następnej/poprzedniej strony.

Działa to dobrze na iOS 9.3 i 10.x. Działa również na 11.0 dla wszystkich urządzeń oprócz iPhone X (symulator). Oznacza to, że rząd kropek z 4 stronkami znajduje się w dolnej części ekranu, tylko 1 lub 2 piksele nad nowym "paskiem głównym", który zapewnia iOS 11 (przesuń w górę, aby przełączyć aplikacje itp.).

Znalazłem film z firmy Apple o nazwie , w którym programista omawia naprawianie podobnego problemu, ale w tym przypadku jego rozwiązaniem było po prostu zmienić automatyczny układ, aby ograniczyć dziecko do "bezpiecznego obszaru" zamiast tradycyjnego przewodnik po układzie dolnym. Ale nie używam UIPageControl na innym kontrolerze widoku; Używam UIPageViewController i nie widzę żadnego sposobu kontrolowania położenia elementów sterujących strony wzdłuż dolnej części okna. (Tak, włączam opcję "Użyj przewodnika układu bezpiecznego obszaru" w Konstruktorze interfejsów.)

Nie mogę sobie wyobrazić, że iOS 11 domyślnie w moim scenariuszu jest niepoprawnie ustawiony UIPageViewController, ani nie widzę żadnego oczywistego sposobu naprawić to. Jakieś sugestie?

+3

To zdecydowanie błąd. Kolejnym jest pływający pasek narzędzi w kontrolerze UINavigationController. Mam nadzieję, że wkrótce to naprawią. – ian

+0

Dzięki za odpowiedź. FYI, zaakceptowałbym to jako odpowiedź, gdyby była to samodzielna odpowiedź zamiast komentarza; Nie widzę sposobu, aby zaakceptować komentarz jako odpowiedź. Dzięki jeszcze raz. – Kenster999

Odpowiedz

9

poprawkę dotyczącą tego nadchodzi w 11,2

https://9to5mac.com/2017/10/30/ios-11-2-beta-1/

UIKit - Rozwiązane problemy

Wyświetlanie kontrolki strony w UIPageViewController na iPhonie X już nie pokrywa się z głównym wskaźnikiem na dole ekranu. (34478195)

+0

Awesome! Dzięki zamieszczeniu tego. – Kenster999

+0

Wygląda na to, że problem nadal występuje w systemie iOS 11.2-Beta2, czy coś mi brakuje? –

+0

Mogę potwierdzić, że wystąpił błąd na IOS 11.1.2 - testowany na prawdziwym iPhoneX. Po aktualizacji urządzenia do IOS 11.2.1 problem został rozwiązany bez żadnych zmian kodu. – Wayne

1

Miałem ten sam problem, ale odkryłem, że jeśli odznaczę "Rozszerz krawędzie - pod dolnymi kreskami" na głównym kontroler widoku, kropki przesuwają się w górę i pojawiają się poprawnie dla iPhone X na symulatorze. Niestety przesuwa również kropki na wszystkich innych urządzeniach ... może nie stanowić problemu, jeśli nie ma zbyt wiele na stronie, ale dla mnie obcinała jedną stronę z dużą ilością tekstu.

To na pewno wygląda jak błąd, więc będę czekać na Apple miejmy nadzieję rozwiązać ten problem, ponieważ wolałbym nie stawiać nieprzyjemnych hacki programowo zmienić krawędzie rozciągają się pod spód belki flagę tylko dla iPhone X