2013-08-15 22 views
5

Aktualnie buduję aplikację przy użyciu UIPageViewController. Działa tak, jak się spodziewałem, dopóki nie osiągnie ostatniej strony zawierającej liczby UITextField.Nieoczekiwane zachowanie UIPageViewController

Ale kiedy dotknąłem jednego z przypadków UITextField, nagle przeskakuje na poprzednią stronę bez żadnego powodu, zamiast pokazywać klawiaturę. Kiedy przejdę do ostatniej strony i ponownie dotknę pola tekstowego, działa bez problemu.

Jest również w porządku, gdy natychmiast wyświetla ostatnią stronę, dotykając przycisku nawigacyjnego, który łączy się z ostatnią stroną i jest dołączony do instancji UIPageViewController.

Ten problem występuje tylko wtedy, gdy przewijam strony od pierwszej do ostatniej strony i zdarza się to tylko raz przy pierwszym podejściu.

Podejrzewałem problemy z niską pamięcią, więc ustawiam pułapki w metodzie - didReceiveMemoryWarning zarówno instancji UIPageViewController, jak i kontrolera ostatniego widoku strony. Ale nigdy nie zostali wezwani.

Druga próba jest to, że dodałem przerwania w -willMoveToParentViewController: metody ostatniej stronie widoku kontrolera i ustawić jej stan na parent == nil (gdy zostanie usunięty z kontrolera widoku rodzica, który jest instancją UIPageViewController w pytaniu)

Kiedy Uruchom aplikację, stos wywołań punktu przerwania mówi, że metoda jest wywoływana przez UIPageViewController's -_flushViewController:animated:.

Nie wiem, dlaczego to -flushViewController: animated: is called. Jeśli uda mi się ustalić przyczynę, pomoże mi to rozwiązać problem.

Czy jest ktoś, kto może mi pomóc?

+0

Witam! Czy byłeś w stanie to rozgryźć? Ja cierpię z tym samym problemem :( – VarunMurali

Odpowiedz

1

Nie jestem pewien, co to jest w twoim kodzie, który to robi, ale jednym z prawdopodobnych podejść do debugowania jest próba złapania zdarzenia UITextField 'UIKeyboardWillShowNotification, aby sprawdzić czy działa poprawnie.

spróbować także ustawić punkt przerwania na Twojej strony viewWillAppear razie do wglądu, jeśli wszystkie UITextField s zostały prawidłowo instancja - Podejrzewam, że w momencie, w którym wykorzystany pierwsze pole tekstowe nie wszystkie z nich zostały jeszcze instancję , co oznacza, że ​​obiekt otrzymujący działanie z kranem będzie twoim UIPageViewController zamiast UITextField.

0

Znalazłem odpowiedź tutaj:

Cannot Impliment UITextview inside a UIPageViewController

zasługa wyłącznie do niego.

Mogę potwierdzić, że to działa. Oto, co zrobiłem w moim kontroler widoku:

//TextField 
    UIScrollView *textFieldScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, width, height)]; 
    textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, width, height)]; 
    [textField setText:@""]; 
    [textField setBackgroundColor:[UIColor whiteColor]]; 
    [textField.layer setCornerRadius:5.0f]; 
    [textField setDelegate:self]; 

    [textFieldScrollView addSubview:textField]; 
    [_someView addSubview:textFieldScroll]; 

Działa jak urok. Daj mi znać, jeśli masz więcej pytań.

Powiązane problemy