老实说,我不知道#selector有什么问题:
func iterate() {
scrollView.subviews[0].subviews[0].addSubview(arrowButton)
arrowButton.addTarget(self, action: #selector(self.pressButton), for: .touchUpInside)
self.view.bringSubview(toFront: arrowButton)
}
func pressButton() {
print("pouet pouet pouet")
}
override func viewDidLoad() {
super.viewDidLoad()
iterate()
}
(不要介意布局的事情,为了清晰起见,我已经删除了所有限制条件)
当我按下按钮时,没有打印任何内容。
我对#selector感到疯狂,这样一个重要的开发仍然是如何使用这个ObjC废话?
答案 0 :(得分:0)
我认为这一行的错误 (scrollView.subviews [0] .subviews [0] .addSubview(arrowButton之上))
可能是您在View jsut check
下添加的按钮func iterate() {
scrollView.subviews[0].subviews[0].addSubview(arrowButton)
arrowButton.addTarget(self, action: #selector(self.pressButton), for: .touchUpInside)
}
func pressButton() {
print("pouet pouet pouet")
}
override func viewDidLoad() {
super.viewDidLoad()
iterate()
}
答案 1 :(得分:0)
可能是因为语法有些问题。试试这个......
arrowButton.addTarget(self, action: #selector(pressButton(_:)), for: .touchUpInside)
对于触摸动作......
func pressButton(_ sender : UIButton){
print("Button Tapped")
}
答案 2 :(得分:0)
1。只是为了调试问题不是因为view hierarchy
,请尝试替换代码的这一行:
scrollView.subviews[0].subviews[0].addSubview(arrowButton)
与
self.view.addSubview(arrowButton)
2。检查arrowButton
的以下属性未在代码中的某处设置为false
:
isEnabled, isUserInteractionEnabled
这两个属性必须为true
,arrowButton
才能接收touch events
。
3。检查arrowButton
顶部是否未添加任何其他视图。
4. 您提供的selector
没有问题。它工作得非常好。我使用下面的代码,它适用于我:
func iterate()
{
let arrowButton = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
arrowButton.backgroundColor = .red
self.view.addSubview(arrowButton)
arrowButton.addTarget(self, action: #selector(self.pressButton), for: .touchUpInside)
self.view.bringSubview(toFront: arrowButton)
}
我认为view hierarchy
在某种程度上导致了这个问题。