当从滚动视图的框架中触摸UITextField时,如何阻止UIScrollView自动滚动?

时间:2011-08-24 19:48:21

标签: iphone uiscrollview uitextfield

默认情况下,如果文本字段是滚动视图的子项,并且当它部分位于父滚动视图的框架之外时被触摸,则滚动视图会向上滚动一点。例如,假设我们有一个框架高度为200的滚动视图,但是contentSize高度为260,我们在220位置放置一个文本字段。现在我向上滚动并将文本字段放置在scrollview框架的一半内,然后让另一半被切断了。如果我触摸此文本字段,我会注意到在键盘出现之前,scrollview会自动向上滚动几个像素。这是有问题的,因为我已经有了自己的滚动代码,所以当发生这种情况时,它最终会滚动两次,直到我想要它为止。有没有办法删除此默认行为?

2 个答案:

答案 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进行了测试。