2013-08-15 2 views
5

В настоящее время я создаю приложение, используя UIPageViewController. Он работает так, как я ожидал, пока не дойдет до последней страницы, которая содержит номера UITextField.Неожиданное поведение UIPageViewController

Но когда я использовал один из экземпляров UITextField, он неожиданно переходит на предыдущую страницу без какой-либо причины вместо того, чтобы показывать клавиатуру. Когда я просматриваю последнюю страницу и снова нажимаю текстовое поле, она работает без проблем.

Это также прекрасно, когда он показывает последнюю страницу, нажав кнопку навигации, которая ссылается на последнюю страницу и прикрепляется к экземпляру UIPageViewController.

Эта проблема возникает только при прокрутке страниц от первого до последнего, и это происходит только один раз с первой попытки.

Я подозревал, что проблема с низкой памятью, поэтому я установил точки останова в - didReceiveMemoryWarning метод как экземпляра UIPageViewController, так и последнего контроллера просмотра страницы. Но их никогда не называли.

Вторая попытка в том, что я добавил точку останова в -willMoveToParentViewController: методы Последней страницы контроллера и установить свое состояние parent == nil (когда он удаляется из контроллера родительского вида, который является экземпляром UIPageViewController в вопросе)

Когда я запустите приложение, стек вызовов точки останова говорит, что метод вызывается UIPageViewController -_flushViewController:animated:.

Я не знаю, почему этот -flushViewController: анимированный: вызывается. Если я смогу понять причину, это поможет мне решить проблему.

Есть ли кто-нибудь, кто может мне помочь?

+0

Привет! Вы могли понять это? Im страдает с той же проблемой :( – VarunMurali

ответ

1

Я не уверен, что это в вашем коде, что делает это, но один возможный подход при отладке - это попытаться поймать событие UIKeyboardWillShowNotification, чтобы проверить, правильно ли он срабатывает.

пытается также установить точку останова на вашей странице viewWillAppear события, если осмотреть все UITextField с были инстанцирован правильно - я подозреваю, что в точке, где вы нажали первое текстовое поле не все из них инстанцированных еще , что означает, что объект, принимающий действие крана, будет вашим UIPageViewController вместо UITextField.

0

Я нашел ответ здесь:

Cannot Impliment UITextview inside a UIPageViewController

Заслуга полностью ему.

Я могу подтвердить, что он работает. Вот что я сделал в своем представлении:

//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]; 

Работает как очарование. Позвольте мне знать, если у вас есть еще вопросы.

Смежные вопросы