当scrollview userInteraction Disabled时pickerview隐藏
Posted
技术标签:
【中文标题】当scrollview userInteraction Disabled时pickerview隐藏【英文标题】:pickerview hidden when scrollview userInteraction Disabled 【发布时间】:2018-10-16 10:49:04 【问题描述】:我的功能是在点击 textField 时打开选择器。我的文本字段在滚动视图内,如下图所示。
我想在选择器打开时禁用滚动视图的用户交互。以下是我的代码。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
[self.picker removeFromSuperview];
[self.toolBar removeFromSuperview];
textField.inputView = self.picker;
textField.inputAccessoryView = self.toolBar;
self.scrollview.userInterationEnabled = NO;
return YES;
当我评论 userInteractionEnabled 代码时。 Picker 正在完美打开。但是当我取消注释代码选择器没有打开。
我还为这段代码提供了一些延迟。所以在 dalay 之后,我的选择器又被隐藏了。
【问题讨论】:
可能是因为 yopur textFieled 是滚动视图的子视图,可能尝试在滚动视图上使用 isScrollEnabled。您也可以尝试在作为 textField 的 inputView 插入的根视图中显示选择器。关于 userInteractionEnabled ***.com/questions/10880868/… 的信息 问题解决了吗? 【参考方案1】:这里的问题是 userInteractionEnabled 是从 scrollView 继承到 textField 的。正如它所解释的here
如果 UITextField 的 userInteractionEnabled 属性为 NO,正如我刚刚发现的那样,它也将拒绝成为第一响应者。在文本字段接受第一响应者状态之前,我必须明确地重新启用用户交互。
而且无法显示textField的inputView。
您应确保您的 textField userInteracationEnables 为 true 或将 pickerView 移到 textField.inputView 之外。
【讨论】:
【参考方案2】:您可以使用this cool 自定义控件将选择器作为文本字段上的 inputView。
或this one,如果您想在选择器打开时禁用与背景视图的交互。
【讨论】:
以上是关于当scrollview userInteraction Disabled时pickerview隐藏的主要内容,如果未能解决你的问题,请参考以下文章
如何在滚动 contentView 之前向上移动 scrollview 的框架? (当 scrollView 从屏幕中间开始时)
SwiftUI:当用户在第一个 ScrollView 中点击该项目时,在特定索引处加载第二个 ScrollView
如何自动滚动 ScrollViewer - 仅当用户未更改滚动位置时