当textfield辞职第一响应者时,scrollview内容返回到原始位置

时间:2013-08-30 12:05:30

标签: ios uiscrollview keyboard uitextfield

新iOS开发人员首次使用该应用程序。

包含多个文本字段的scrollview。

已在textFieldDidBeginEditing:中对页面内容进行向上移动编码,以便文本字段不会被键盘遮挡。当使用textFieldShouldReturn:按下键盘返回键时编码键盘消失,我编码屏幕返回到didHideKeyboard中的原始位置。

如果用户点击第一个响应者文本字段之外(包括他们点击另一个文本字段),屏幕会以某种方式返回其原始位置而不会触发任何代码,并且键盘不会消失。我没有使用autolayout

我的问题是当用户在输入第一个文本字段后立即点击第二个文本字段时,如何阻止屏幕返回其原始位置?

2 个答案:

答案 0 :(得分:2)

这取决于用户尝试在文本字段外触摸时要执行的操作。一种选择是在文本字段编辑时简单地禁用滚动视图上的滚动,然后在解除键盘时重新启用它。

另一个选项是实现UIScrollViewDelegate方法scrollViewWillBeginDragging:以检测用户是否正在移动滚动视图,然后重新设置scrollview的偏移量,并从那里从文本字段中重新调出第一个响应者。

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    if (myTextField.isFirstResponder) {
        [scrollView setContentOffset:originalOffset];
        [myTextField resignFirstResponder];
    }
}

答案 1 :(得分:0)

对于您的问题,您可以使用名为TPKeyboardAvoiding的电池库来设置UITextFieldUITextView的滚动位置,同时键盘打开并隐藏。你不需要在不同的方法中手动设置滚动位置。
它是UIScrollView的子类。它管理所有内容。
请在Keyboard Avoiding Scrollview

上获取文件和实施细节