[英]UIButton touch not registering (Swift)
我创建了一个按钮,但是由于某种原因,触摸无法识别:
override func viewDidLoad() {
super.viewDidLoad()
var settingsButton = UIButton.buttonWithType(UIButtonType.System) as UIButton
settingsButton.frame = CGRectMake(self.view.frame.size.width - 50, 35, 35, 35)
settingsButton.setImage(UIImage(named: "settings-button"), forState: UIControlState.Normal)
settingsButton.addTarget(self, action: Selector("settingsButtonPressed"), forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(settingsButton)
}
func settingsButtonPressed(){
println("Settings selected")
}
我没有收到任何错误,只是在我按下按钮时未注册。 我也尝试过制作UIButtonType.Custom类型的按钮,并且尝试过选择器为
Selector("settingsButtonPressed")
Selector("settingsButtonPressed:") //I changed the function to settingsButtonPressed(sender: UIButton)
"settingsButtonPressed"
"settingsButtonPressed:" //I changed the function to settingsButtonPressed(sender: UIButton)
当无法单击子视图/按钮时,有很多方法可以解决问题,下面将介绍解决此问题的可能方法。
您应该确保isUserInteractionEnabled = true
确保isEnabled = true
您可以使用Xcode 3d视图层次结构工具。 您可以在Xcode上执行此操作,方法是先运行您的应用,然后导航至无法触摸的屏幕。 单击下面以我的示例为蓝色突出显示的按钮。
完成上述操作后,当应用程序放大并旋转以查看哪些View挡住了您的按钮/视图时,您的应用程序将暂停并显示其图形层次结构。 查看下面的图片以供参考
希望这对某人有帮助。
我在这里没有提到的此问题的一个常见原因是按钮的userInteractionEnabled值必须为true。
一个更独特的原因是当父视图是问题时。 在我的情况下,我在容器视图中有一个图像视图,并添加了一个按钮作为该图像视图的子视图,因此它将显示在顶部,并允许用户点击该按钮来更改图像。
在将按钮设为容器视图的子视图之前,我所做的一切都无法使按钮动作起作用,然后突然开始起作用。 在我的情况下,似乎UIImageView不允许子视图获取tap事件。
UI元素和视图控制器之间的链接很可能断开。 尝试重新创建ui元素和视图控制器之间的链接。
在视图控制器上,转到设置断点的右侧栏,然后在链接按钮的行上查找一个小圆圈。 如果已满,则说明您已链接。 如果中间是空心的,则不链接。
用这个-
self.settingsButton.addTarget(self, action: Selector("settingsButtonPressed:"), forControlEvents: UIControlEvents.TouchUpInside)
和
func settingsButtonPressed(sender:UIButton!){
println("Settings selected")
}
查看如何以编程方式创建按钮的答案?
由Anil提供。 我检查过了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.