我创建了一个按钮,但由于某种原因,触摸无法识别:
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)
答案 0 :(得分:2)
我在此处未提及此问题的一个常见原因是该按钮的userInteractionEnabled值必须为true。
更为独特的原因是父视图出现问题。在我的情况下,我在容器视图中有一个图像视图,并添加了一个按钮作为图像视图的子视图,因此它将显示在顶部,并允许用户点击按钮来更改图像。
我做的任何事情都不会让按钮操作起作用,直到我尝试使按钮成为容器视图的子视图,它突然开始工作。在我的情况下,看起来UIImageView不允许子视图获取点击事件。
答案 1 :(得分:2)
当子视图/按钮无法点击时,有很多方法可以解决问题,我将在下面提到修复它的可能方法。
答案 2 :(得分:0)
可能是UI元素和视图控制器之间的链接断开。 尝试重新创建ui元素和视图控制器之间的链接。
在视图控制器上,查看设置断点的右侧栏,并在按钮链接的行上查找一个小圆圈。如果它已填满你的链接。 如果中间是空心的,则它没有联系。
答案 3 :(得分:0)
使用此 -
self.settingsButton.addTarget(self, action: Selector("settingsButtonPressed:"), forControlEvents: UIControlEvents.TouchUpInside)
和
func settingsButtonPressed(sender:UIButton!){
println("Settings selected")
}
查看How to create a button programmatically?
的答案由Anil提供。它检查了。