【发布时间】:2011-03-11 21:46:46
【问题描述】:
我有一个以编程方式创建的 UIButton。如何让这个 UIButton 将其修饰事件发送到我拥有的 IBAction?
【问题讨论】:
标签: iphone objective-c uibutton
我有一个以编程方式创建的 UIButton。如何让这个 UIButton 将其修饰事件发送到我拥有的 IBAction?
【问题讨论】:
标签: iphone objective-c uibutton
addTarget:action:forControlEvents: 方法。
[myButton addTarget:myClass action:@selector(myEventHandler) forControlEvents: UIControlEventTouchUpInside];
【讨论】:
(id)sender。
使用这行代码,您将通过编程方式触发 UIbutton 操作
[button sendActionsForControlEvents:UIControlEventTouchUpInside];
快速
button.addTarget(self, action:#selector(functionNameHere), for: UIControl.Event.touchUpInside)
【讨论】:
[button addTarget:self
action:@selector(myMethod:)
forControlEvents:UIControlEventTouchUpInside];
像魔法一样 =)
【讨论】:
UIControlEventTouchUpInside。反应应该是在按钮释放时,而不是在按下时。并且用户应该可以选择通过移开手指来改变主意。
Swift 3.0
button.addTarget(self, action:#selector(funcName), for: UIControlEvents.touchUpInside)
【讨论】:
斯威夫特 5
您还可以发送发送者来识别触摸的按钮。另外,别忘了在你的函数名前加上 objc:
private func setOnClicks() {
btn.addTarget(self, action: #selector(onBtnClick), for: .touchUpInside)
}
@objc func onBtnClick(_ sender: UIButton) -> Void {
print("touched \(sender.tag)")
}
【讨论】:
使用addTarget(,action:,for:) 为UIButton 轻松设置添加操作
let addVehicleButton = UIButton() // Create a button
addVehicleButton.setTitle("Add vehicle", forState: .normal) // set title
addVehicleButton.frame = CGRectMake(20, 50, 50, 40) // setting frame
addVehicleButton.addTarget(self, action: #selector(addVehicleButtonClickedAction), for: .touchUpInside) // Add target and control event with trigger function selector
self.view.addSubview(addVehicleButton) // adding to superview
// MARK: - 点击动作句柄
/// Add vehicle button clicked action
@objc func addVehicleButtonClickedAction() {
}
【讨论】: