【问题标题】:iOS: UIView blocks the userinteraction but not it's subviewiOS:UIView 阻止用户交互,但不是子视图
【发布时间】:2016-06-27 10:19:40
【问题描述】:

我正在尝试自定义 UIPickerView

我有一个 UIView 的子类,它是 mainView。

还有一个用于模糊或变暗背景的蒙版视图,我将它添加到主视图中。

然后是选择器视图,我已将它作为子视图添加到掩码视图中。

层次结构很简单

--主视图

| -- 掩码视图

|| -- 选择器视图

最后我将整个视图添加到应用程序键窗口。

我的问题是,每次显示此主视图时,我都希望掩码视图阻止用户交互,因此用户无法在选择器视图之外单击。

但是如果我将遮罩视图的 userinteractive 设置为 no,它也会阻止选取器视图的滚动和触摸。

那么我怎样才能实现超级视图是非交互的,而它的子视图是交互的呢?

谢谢。

【问题讨论】:

    标签: ios objective-c iphone uiview


    【解决方案1】:

    默认情况下,如果你的 mask view 是纯 UIView,当你和它进行交互时,什么都没有发生。否则,让我们在自定义遮罩视图之上添加另一个纯 UIView。

    --主视图

    | -- customView 用户可以交互(如果是自定义的,你的旧掩码视图)

    || -- 掩码视图

    ||| -- 选择器视图

    【讨论】:

      【解决方案2】:

      1.将 superview 设置为非交互式:

      Yoursuperview.userInteractionEnabled=NO;
      

      2.将子视图设置为交互式:

      然后,遍历您的 superview 的子视图并将用户交互设置为 YES,如下所示:

      for (UIView* view in YourSuperView.subviews) {
      
          if ([view isKindOfClass:[/*"which ever class of your subviews "*/ class]])
      
              [view setUserInteractionEnabled:YES];
      
      }
      

      或

      将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

      【讨论】:

        【解决方案3】:

        按如下方式设置层次结构:

        --主视图

        | -- 掩码视图

        | -- 选择器视图

        现在您可以在 maskview 上将 userInteractionEnabled 设置为 NO,而不会阻塞 pickerview。选择器视图必须位于文档大纲中的 maskview 下方,才能位于 maskview 的前面。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-01-11
          • 2021-02-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-22
          • 1970-01-01
          相关资源
          最近更新 更多