6

我目前正在使用UIPageViewController. 它按我的预期工作,直到它到达包含 UITextField 数量的最后一页。

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

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

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

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

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

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

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

有没有人可以帮助我?

4

2 回答 2

2

我不确定您的代码中执行此操作的内容是什么,但调试此问题的一种可能方法是尝试捕获UITextField'UIKeyboardWillShowNotification事件以检查它是否正确触发。

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

于 2013-08-15T04:53:04.577 回答
0

我在这里找到了答案:

无法在 UIPageViewController 中实现 UITextview

功劳完全归功于他。

我可以确认它有效。这是我在视图控制器中所做的:

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

奇迹般有效。如果您还有其他问题,请告诉我。

于 2013-08-19T06:08:23.157 回答