addTarget(_:action:for:) 和 sendAction(_:to:for:) UIControl 实例方法有什么区别?

What is the difference between addTarget(_:action:for:) and sendAction(_:to:for:) UIControl instance methods?

我正在子类化 UIControl,因为我想将我的视图控制器设置为目标,所以我发现了 sendAction 方法。我真的无法弄清楚这两种方法之间的区别以及它们各自的用法何时更合适。

区别在于sendAction(_:to:for:) actually calls the defined selector right away, while addTarget(_:action:for:)将目标和动作与控件相关联并且仅在事件发生时调用选择器。

您将使用 sendAction:to:forEvent: 来模拟实际的底层系统调用。即:模拟用户实际点击 UIButtonUIControl)并将 UIControlEvents touchUpInside 发送到目标。我个人以前从未使用过它。

addTarget:action:forControlEvents: 映射选择器、UIControlEvent 和目标,以便稍后使用,例如当用户点击 UIButton.