默认情况下,如果文本字段是滚动视图的子项,并且当它部分位于父滚动视图的框架之外时被触摸,则滚动视图会向上滚动一点。例如,假设我们有一个框架高度为200的滚动视图,但是contentSize高度为260,我们在220位置放置一个文本字段。现在我向上滚动并将文本字段放置在scrollview框架的一半内,然后让另一半被切断了。如果我触摸此文本字段,我会注意到在键盘出现之前,scrollview会自动向上滚动几个像素。这是有问题的,因为我已经有了自己的滚动代码,所以当发生这种情况时,它最终会滚动两次,直到我想要它为止。有没有办法删除此默认行为?
答案 0 :(得分:1)
听起来您的滚动视图会因为键盘显示而移动,而不是轻触文本字段。看看Apple's Managing the Keyboard documentation;它有一个关于scrollviews的有用部分。
答案 1 :(得分:0)
这里已经回答了类似的问题: https://stackoverflow.com/a/5673026/550177
当文本字段成为第一响应者时,您还可以尝试重置scrollview的contentOffset。像这样实现文本字段委托:
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
[self.scrollView setContentOffset:_scrollView.contentOffset animated:NO];
}
此代码在选择文本字段时删除该自动动画。我已经在模拟器中使用iOS 6.1进行了测试。