Swift 我的UIButton没有';不要调用目标方法
老实说,我不知道这个选择器有什么问题:Swift 我的UIButton没有';不要调用目标方法,swift,uibutton,selector,Swift,Uibutton,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 pre
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()
}
(不要介意布局问题,为了清晰起见,我已经删除了所有约束)
当我按下按钮时,什么也不打印
我被选择器弄疯了,这么重要的一个开发项目怎么还在使用这个ObjC垃圾
编辑:我的UIBUtton位于所有层的顶部,或者至少这是XCode调试工具所说的(按钮位于右下角)=
我认为这一行有错误
(滚动视图。子视图[0]。子视图[0]。添加子视图(箭头按钮))
您的按钮是否添加到at 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()
}
可能是因为语法有问题。试试这个
arrowButton.addTarget(self, action: #selector(pressButton(_:)), for: .touchUpInside)
对于触摸动作
func pressButton(_ sender : UIButton){
print("Button Tapped")
}
1。仅调试问题并不是因为
视图层次结构造成的,请尝试替换这行代码:
scrollView.subviews[0].subviews[0].addSubview(arrowButton)
isEnabled, isUserInteractionEnabled
与
2.检查箭头按钮的以下属性是否未在代码中的某个位置设置为false
:
scrollView.subviews[0].subviews[0].addSubview(arrowButton)
isEnabled, isUserInteractionEnabled
这两个属性必须为true
,才能使箭头按钮
接收触摸事件
3.检查箭头按钮顶部是否未添加任何其他视图
4。您提供的选择器没有问题。它工作得非常好。我使用了下面的代码,它适用于我:
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)
}
我认为视图层次结构
在某种程度上导致了这个问题。我看不出有什么问题。试着只按按钮而不用自己。
?我试过了,我试过了我在网上能找到的每一种语法,但都没用……每次我不得不使用选择器时,我至少会损失半天的时间,说真的……事实上,问题可能不是选择器。它可能完全在别的地方。检查是否调用了viewDIdLoad
。由于我的按钮和viewDIdLoad中的所有内容都显示了,我想我的viewDIdLoad被调用了,不是吗?我在里面放了一个print(),它也出现了。好的。我建议您在Xcode中创建一个新项目,并尝试用尽可能短的代码重现这个问题。然后把它贴在这里。还包括您所做的其他步骤。我怀疑,但我添加了self.view.bringSubview(toFront:arrowButton),并且我已经使用XCode调试工具进行了检查(请参见编辑),它肯定位于顶部…您是否添加了arrowButton框架,是否使用了约束,只是为UIButton设置了框架我使用了约束,但再次,按钮在Z、Y或X上的位置,高度或宽度都很好,xcode对布局没有任何抱怨,模拟器中的一切都很好。仅此M*******ing#selector…嗯…尝试添加此…箭头按钮。添加目标(自身,操作:#selector(按按钮(发送人:)),用于:。touchUpInside)