Ios 更改从情节提要链接到代码时iAction中使用的默认事件

Ios 更改从情节提要链接到代码时iAction中使用的默认事件,ios,xcode,storyboard,interface-builder,ibaction,Ios,Xcode,Storyboard,Interface Builder,Ibaction,将iAction从故事板链接到代码时,是否可以更改自定义UIControl触发的默认事件 让我解释一下: 如果在情节提要中添加ui按钮,并将其拖动到代码中,则会出现一个弹出窗口,您可以在其中将所需的连接类型定义为IBOutlet,或者在本例中定义为IBAction 如果您选择了iAction,则选择的默认事件是Touch Up Inside,这非常重要,因为您只想知道按钮何时按下的可能性很大 但是如果您从自定义ui视图/UIControl或ui按钮的子类事件中执行此操作,则发送的默认事件始终是

iAction
从故事板链接到代码时,是否可以更改自定义
UIControl
触发的默认事件

让我解释一下:

如果在情节提要中添加
ui按钮
,并将其拖动到代码中,则会出现一个弹出窗口,您可以在其中将所需的连接类型定义为
IBOutlet
,或者在本例中定义为
IBAction

如果您选择了
iAction
,则选择的默认事件是
Touch Up Inside
,这非常重要,因为您只想知道按钮何时按下的可能性很大

但是如果您从自定义
ui视图/UIControl
ui按钮的子类事件中执行此操作,则发送的默认事件始终是
值已更改


因此,我的问题是:是否可以更改自定义UI元素的默认行为?

您可以为按钮创建一个出口

 @IBOutlet var myButton: UIButton!
然后以编程方式添加您的操作:

myButton.addTarget(self, action: #selector(myButtonActionMethod(sender:)), for: .touchUpInside)
以及


然后你会有更多的控制权。这就是你的意思吗?

我认为你不能更改默认值,但是

如果您不知道,您可以右键单击UI元素,然后从弹出菜单中单击并拖动要连接的事件

另外,如果您的代码中已经有了
@IBAction
,如:

@IBAction func myFunc(_ sender: Any) {
    // code here
}
您可以右键单击UI元素并从所需事件拖动到该功能块以建立连接。代码块将突出显示,让您知道可以释放鼠标按钮


不完全是“定制”ctrl-drag,但您可能会发现它更容易/更快。

确实有很多替代方案,但我真的在寻找一种解决方案,我仍然可以使用Xcode的alt-drag功能,而不必打开下拉菜单。啊,我明白您的意思了谢谢@DonMag,实际上,我在连接时也使用了这个弹出菜单,但由于您不知道自定义元素支持哪些事件,除非您自己构建了它或检查了代码,我发现它对其他可能在我之后处理该项目的开发人员并不友好。一个很好的选择,否则虽然!是的,我明白你的意思。向控制上下文菜单的
@IBDesignable
类添加类似于
generatesEvents[]
属性的内容是对Xcode/IB的一个很好的补充。
@IBAction func myFunc(_ sender: Any) {
    // code here
}