繁体   English   中英

iOS:UIView会阻止用户交互,但不会阻止其子视图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM