【问题标题】:Prevent click through view in swift防止快速点击视图
【发布时间】:2016-07-27 15:42:27
【问题描述】:

我在 Xcode 和 swift 中工作,我创建了一个视图作为菜单,可以在点击时切换,当菜单出现时,我仍然可以单击它下面的测试按钮。我不希望这种情况发生。我希望禁用视图后面的所有内容,优先考虑菜单视图。 (查看下图)

screenshot from the sample app

  • 请记住,我不会考虑使用一个按钮,如果是这种情况,我会禁用该特定按钮。此页面将是一个滚动视图,并且是动态的。

这是我正在使用的代码:

@IBAction func MenuButton(sender: UIButton) {
    if self.MenuView.frame.origin.x == -180 {
        UIView.animateWithDuration(0.5, animations:{
            self.MenuView.frame = CGRectMake(self.MenuView.frame.origin.x + 180, self.MenuView.frame.origin.y, self.MenuView.frame.size.width, self.MenuView.frame.size.height)
        })

    } else {
        UIView.animateWithDuration(0.5, animations:{
            self.MenuView.frame = CGRectMake(self.MenuView.frame.origin.x - 180, self.MenuView.frame.origin.y, self.MenuView.frame.size.width, self.MenuView.frame.size.height)
        })
    }
}

视图在左侧隐藏 180 像素,当单击菜单按钮时,视图将在右侧设置 180 像素的动画,从而将其带到前面。该函数检查视图是否已打开,以便将其动画回 180 像素以隐藏它。

我唯一需要的是禁止点击视图。

【问题讨论】:

    标签: ios swift xcode uiview animatewithduration


    【解决方案1】:

    Swift 3 版本非常适合我阻止点击(感谢 @Ismail 之前的评论)。

    myAddedSubView.isUserInteractionEnabled = true
    

    这是“简单的单行”答案,其工作方式类似于 z 索引(假设您希望 z 索引为“绝对顶部”。

    【讨论】:

      【解决方案2】:

      按钮仍然可见和可点击的事实意味着它必须位于菜单的前面。如果您重新排列事物的顺序,使菜单位于按钮的前面,那么您应该会得到您正在寻找的结果。

      【讨论】:

      • 谢谢,解决了。我是新来的。我认为将视图(Div)放在另一个元素前面会禁用它。我不知道为什么苹果必须让它变得如此复杂。还是谢谢。
      • @YousifAl-Raheem 有一种情况,即使它在视图下方,视图也会将触摸传递给按钮。当视图User Interaction Enabledfalse时的这种情况
      • @Ismail 我试过了,将启用的用户交互设置为 false 将禁用菜单,使其无用。在storyboard里重新排列比较好,我以为会有代码解决方案,例如:一行代码设置view z index。
      • 我不是这个意思。我的意思是它应该打开,因为如果它关闭它会导致下面的按钮可以通过它点击。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      • 2015-02-25
      相关资源
      最近更新 更多