【问题标题】:TouchesBegan not firingTouchesBegin没有开火
【发布时间】:2016-02-14 20:18:10
【问题描述】:

我的故事板看起来像这样:

Controller
    top/bottom layout guide
    view
        UIview
            UIButton
        UIImageView

我的触摸功能是这样的:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    print("touched")
}

当我触摸屏幕上除按钮所在位置之外的所有位置时,我的打印内容就会被记录下来。

UIImageView 占据了整个屏幕,按钮只是中间一个 50x50 像素的正方形。尽管我只能看到当我单击按钮所在的顶部时的图像,但没有任何东西被触发。单击其他任何地方都会正确触发事件

【问题讨论】:

  • 这不是您设置UIButton 的方式。 - 您需要创建一个标有@IBAction 的方法,例如@IBAction func buttonAction(sender:AnyObject!) { ... } 并将其连接到情节提要中按钮上的“内部修饰”操作。尝试做一些基础教程以获得进一步指导 -Ray Wenderlich 有一些不错的
  • 但是按钮不应该是无关紧要的,因为它位于 uiimageview 下方。怎么会影响到view的touchesbegin
  • UIImageView 默认情况下将userInteractionEnabled 设置为false,这与普通的UI 视图不同,因此触摸通过它并在底层视图上注册,但按钮设置了userInteractionEnabled为真,但没有动作,所以它拦截了触摸并且什么都不做,但在下面的视图中阻止了-touchesBegan:
  • 啊,我明白了,谢谢,这就是我所缺少的

标签: ios iphone swift autolayout swift2


【解决方案1】:

检查元素用户交互启用属性是否为真。希望有帮助。 :)

【讨论】:

    【解决方案2】:

    您必须确保通过@IBAction 将UIButton 设置为适当的方法。在 main.storyboard 屏幕中,您可以右键单击或选项单击 UIButton 并将其拖动到适当的类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多