iOS UIScrollViewKeyboardDismissModeInteractive 禁用文本字段交互
Posted
技术标签:
【中文标题】iOS UIScrollViewKeyboardDismissModeInteractive 禁用文本字段交互【英文标题】:iOS UIScrollViewKeyboardDismissModeInteractive disables text field interaction 【发布时间】:2014-05-30 13:53:56 【问题描述】:在 ios7 应用程序中,我在 UIScrollView 上有一堆 UITextFields 可以垂直滚动。
我设置了scrollView.keyboardDismissMode = UIScrollViewKeyboardDismissModeInteractive;
现在,我可以通过拖动滚动视图来关闭键盘。我第一次以这种方式关闭键盘时,会发生一些事情:
我不能再编辑任何 UITextFields。好像他们的userInteractionEnabled
设置为NO
。光标不会出现在文本字段内。键盘没有出现。
我不知道为什么我第一次以交互方式关闭键盘后,我的文本字段变得无响应。有人遇到过这个问题吗?
编辑:
如果我打电话给[self.view endEditing:YES];
,我会得到一个非常奇怪的行为(附截图)。屏幕的大部分上部变为灰色。当我旋转设备时,灰色矩形移动到底部,文本字段再次响应。
【问题讨论】:
请看这个:***.com/help/how-to-ask 【参考方案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
方法之上。
现在,效果很好。
【讨论】:
以上是关于iOS UIScrollViewKeyboardDismissModeInteractive 禁用文本字段交互的主要内容,如果未能解决你的问题,请参考以下文章