【问题标题】:Buttons are unclickable swift按钮是不可点击的 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,当然还有按钮本身)禁用了交互,要么是按钮实际上不在层次结构中,所以视图在它之上。

标签: ios uiview uibutton


【解决方案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 后,它起作用了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    相关资源
    最近更新 更多