2

拥有第一个委托应用程序的新 iOS 开发人员。

具有多个文本字段的滚动视图。

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

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

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

4

2 回答 2

2

这取决于当用户尝试触摸文本字段之外时您想要做什么。一种选择是在编辑文本字段时简单地禁用滚动视图上的滚动,然后在关闭键盘时重新启用它。

一个不同的选择是实现 UIScrollViewDelegate 方法scrollViewWillBeginDragging:来检测用户正在移动滚动视图,然后重置滚动视图的偏移量,并从那里从文本字段中退出第一响应者。

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    if (myTextField.isFirstResponder) {
        [scrollView setContentOffset:originalOffset];
        [myTextField resignFirstResponder];
    }
}
于 2013-08-30T12:13:14.927 回答
0

对于您的问题,您可以获取命名的连击库以在键盘打开和隐藏的TPKeyboardAvoiding情况下设置滚动位置。您不需要在不同的方法中手动设置滚动位置。它是 的子类。它管理所有的东西。请获取有关Keyboard Avoiding Scrollview的文件和实现细节UITextFieldUITextView
UIScrollView

于 2013-08-30T12:13:52.330 回答