【问题标题】:iOS UIScrollViewKeyboardDismissModeInteractive disables text field interactioniOS UIScrollViewKeyboardDismissModeInteractive 禁用文本字段交互
【发布时间】:2014-05-30 13:53:56
【问题描述】:

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

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

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

编辑:

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

【问题讨论】:

标签: ios objective-c uiscrollview uitextfield uikeyboard


【解决方案1】:

原来我遇到的问题与scrollView.keyboardDismissMode无关。这与弄乱滚动视图的内容偏移和插入有很大关系。

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

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

这是一次糟糕的 hack 尝试,试图通过以下方式轻松完成:

self.automaticallyAdjustsScrollViewInsets = NO;

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

现在,效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 2012-08-27
    相关资源
    最近更新 更多