按钮是不可点击的 swift

Posted

技术标签:

【中文标题】按钮是不可点击的 swift【英文标题】:Buttons are unclickable swift 【发布时间】:2017-09-09 14:12:02 【问题描述】:

我的 Xcode 项目中的两个按钮有问题。在它们上方添加两个视图以在它们周围创建边框后,它们不能再被单击。再次删除它们后,按钮可以工作,但添加背面会导致它们无法工作。

这是我项目中的视图层次结构:

之前:

-mainView
 -scrollView
  -contentView
   -stackView
    -stackView
     -stackView
      -stackView
       -Button1
       -Button2

之后:

-mainView
 -scrollView
  -contentView
   -stackView
    -stackView
     -stackView
      -stackView
       -uiView (new View)
        -uiView (new View)
         -Button1
       -uiView (new View)
        -uiView (new View)
         -Button2

是不是因为浏览量太多?

非常感谢,如果您需要更多信息,请写评论,我会尽力在下一次编辑中提供帮助。

【问题讨论】:

你确定按钮顶部没有视图吗? @Shades 不,它们都在我上面显示的视图中。 检查这些视图是否启用用户交互 已经是... 我没主意了。通常这个问题要么是由于某些东西(包括 UIViews 和 Stackviews,当然还有按钮本身)禁用了交互,要么是按钮实际上不在层次结构中,所以视图在它之上。 【参考方案1】:

UIView 子类化为PassthroughView,并将新添加的视图的类设置为PassthroughView。添加此代码:

class PassthroughView: UIView 
  override func point(inside point: CGPoint, with event: UIEvent?) -> Bool 
    return subviews.contains(where:  !$0.isHidden && $0.point(inside: point, with: event)
    )
  

【讨论】:

这是做什么的? 它通过每个按钮的超级视图传递触摸。 不幸的是,它不起作用,但我可能已经找到了另一种方法,因此我根本不需要使用按钮,而是将其中一个视图用作带有 Tap Gesture Recognizer 的按钮.【参考方案2】:

好的,我现在有了解决方案... 将 StackView 的 AlignmentDistribution 设置为 Fill 后,它起作用了

【讨论】:

以上是关于按钮是不可点击的 swift的主要内容,如果未能解决你的问题,请参考以下文章

屏幕的某些部分在 SWIFT 中不可点击

Swift:UIButton 不可点击,NSLayoutConstraint heightAnchor 问题

Swift - 添加UIView后无法点击按钮

在导航栏中插入图标​​/使 BarButtonItem 不可点击 Swift iOS

swift中button的点击方法需要加@objc

如何在 Swift iOS 中使 web 视图不可点击