按钮是不可点击的 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 的 Alignment
和 Distribution
设置为 Fill
后,它起作用了
【讨论】:
以上是关于按钮是不可点击的 swift的主要内容,如果未能解决你的问题,请参考以下文章
Swift:UIButton 不可点击,NSLayoutConstraint heightAnchor 问题