iOS UIScrollViewKeyboardDismissModeInteractive禁用文本字段交互

时间:2014-05-30 13:53:56

标签: ios objective-c uiscrollview uitextfield uikeyboard

在iOS7应用程序上,我在UIScrollView上有一堆UITextFields,它们垂直滚动。 我设置了scrollView.keyboardDismissMode = UIScrollViewKeyboardDismissModeInteractive;

现在,我可以通过拖动滚动视图来关闭键盘。我第一次以这种方式解雇键盘时,会发生一些事情: 我无法再编辑任何UITextField。好像他们的userInteractionEnabled设置为NO。光标不会出现在文本字段中。键盘没有出现。

我不知道为什么我的文本字段在第一次以交互方式关闭键盘后变得无法响应。有人遇到过这个问题吗?

编辑:

如果我致电[self.view endEditing:YES];,我会得到一个非常奇怪的行为(附上截图)。屏幕的大上部变为灰色。当我旋转设备时,灰色矩形移动到底部,文本字段再次响应。

enter image description here

1 个答案:

答案 0 :(得分:0)

事实证明,我遇到的问题与scrollView.keyboardDismissMode无关。它与搞乱滚动视图的内容偏移和插入有很大关系。

我发现我的视图控制器已被设置为垂直滚动视图的委托。 它实现了一种委托方法:

-(void) scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView.contentOffset.y < 0) {
        [scrollView setContentOffset:CGPointMake(0, 0)];
    }
}

这是一次糟糕的黑客企图,可以通过以下方式轻松完成:

self.automaticallyAdjustsScrollViewInsets = NO;

所以我删除了scrollViewDidScroll方法,取消设置滚动视图的委托,并将self.automaticallyAdjustsScrollViewInsets = NO放在我的视图控制器的viewDidLoad方法之上。

现在,效果很好。