意外的UIPageViewController行为

时间:2013-08-15 04:42:05

标签: ios objective-c uipageviewcontroller

我目前正在使用UIPageViewController构建应用。它正如我预期的那样工作,直到它到达包含UITextField数量的最后一页。

但是当我点击其中一个UITextField实例时,它突然跳到上一页而没有任何理由而不是显示键盘。当我滚动到最后一页并再次点击文本字段时,它运行良好没有任何问题。

通过点击链接到最后一页并附加到UIPageViewController实例的导航按钮,立即显示最后一页也很好。

只有在我从第一页到最后一页滚动页面时才会出现此问题,并且在第一次尝试时只会发生一次。

我怀疑内存不足,所以我在UIPageViewController实例和最后一个页面视图控制器的 - didReceiveMemoryWarning方法中设置了断点。但他们从未被召唤过。

第二个尝试是我在最后一个页面视图控制器的-willMoveToParentViewController:方法中添加了一个断点,并将其条件设置为parent == nil(当它从父视图控制器中移除时,它是有问题的UIPageViewController实例)

当我运行应用程序时,断点的调用堆栈表示该方法由UIPageViewController的-_flushViewController:animated:调用。

我不知道为什么这个-flushViewController:animated:被调用。如果我能找出原因,它将帮助我解决问题。

有没有人可以帮助我?

2 个答案:

答案 0 :(得分:2)

我不确定你的代码中是做什么的,但调试它的一个可能方法是尝试捕获UITextField的{​​{1}}事件以检查它是否正常触发。

还尝试在页面的UIKeyboardWillShowNotification事件中设置断点,以检查是否所有viewWillAppear都已正确实例化 - 我怀疑在您点击第一个文本字段的位置并非所有人都已实例化,这意味着接收点击操作的对象将是UITextField而不是UIPageViewController

答案 1 :(得分: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];

像魅力一样工作。如果您还有其他问题,请与我们联系。