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)