【发布时间】: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