![](/img/trans.png)
[英]Disable userinteraction or touches event in UIView but still enable for subview
[英]iOS: UIView blocks the userinteraction but not it's subview
我正在尝试自定义UIPickerView
我有一个UIView是mainView的子类。
并且有一个蒙版视图,用于模糊或变暗背景,我将其添加到mainView中。
然后是选择器视图,我已将其添加为蒙版视图作为子视图。
层次结构很简单
--mainview
| -maskview
|| -pickerview
最后,我将整个视图添加到应用程序密钥窗口。
我的问题是,每次显示此主视图时,我都希望蒙版视图阻止用户交互,因此用户不能在选择器视图之外单击。
但是,如果我将遮罩视图的userinteractive设置为no,它也会阻止选择器视图滚动和触摸。
那么,如何实现超级视图是非交互式的,而子视图是交互式的呢?
谢谢。
1.将超级视图设置为非交互式:
Yoursuperview.userInteractionEnabled=NO;
2.将子视图设置为交互式:
然后,遍历父视图的子视图,并将用户交互设置为YES,如下所示:
for (UIView* view in YourSuperView.subviews) {
if ([view isKindOfClass:[/*"which ever class of your subviews "*/ class]])
[view setUserInteractionEnabled:YES];
}
要么
将setUserInteractionEnabled
设置为您的setUserInteractionEnabled
视图的所有子视图
for (UIView* view in YourSuperView.subviews) {
[view setUserInteractionEnabled:YES];
}
要么
Yoursuperview.userInteractionEnabled=NO;
[[yourSuperView subviews]makeObjectsPerformSelector:@selector(setUserInteractionEnabled:) withObject:[NSNumber numberWithBool:FALSE]];
在此处查看更多信息: https : //stackoverflow.com/a/11546963/5575752
默认情况下,如果蒙版视图是纯UIView,则在与它进行交互时不会发生任何事情。 否则,请在自定义蒙版视图的顶部添加另一个纯UIView。
--mainview
| -customView用户可以进行交互(如果您是自定义蒙版,则您的旧蒙版视图)
|| -maskview
||| -pickerview
像下面这样设置层次结构:
--mainview
| -maskview
| -pickerview
现在,您可以在maskview上将userInteractionEnabled设置为NO,而不会阻止pickerview。 选择器视图必须在文档大纲中的maskview下方,以便位于maskview的前面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.