我目前正在使用UIPageViewController
构建应用。它正如我预期的那样工作,直到它到达包含UITextField数量的最后一页。
但是当我点击其中一个UITextField实例时,它突然跳到上一页而没有任何理由而不是显示键盘。当我滚动到最后一页并再次点击文本字段时,它运行良好没有任何问题。
通过点击链接到最后一页并附加到UIPageViewController实例的导航按钮,立即显示最后一页也很好。
只有在我从第一页到最后一页滚动页面时才会出现此问题,并且在第一次尝试时只会发生一次。
我怀疑内存不足,所以我在UIPageViewController实例和最后一个页面视图控制器的 - didReceiveMemoryWarning
方法中设置了断点。但他们从未被召唤过。
第二个尝试是我在最后一个页面视图控制器的-willMoveToParentViewController:
方法中添加了一个断点,并将其条件设置为parent == nil
(当它从父视图控制器中移除时,它是有问题的UIPageViewController实例)
当我运行应用程序时,断点的调用堆栈表示该方法由UIPageViewController的-_flushViewController:animated:
调用。
我不知道为什么这个-flushViewController:animated:被调用。如果我能找出原因,它将帮助我解决问题。
有没有人可以帮助我?
答案 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];
像魅力一样工作。如果您还有其他问题,请与我们联系。