关闭 UIMenuElement Swift 的委托
Dismiss delegate for UIMenuElement Swift
我的应用程序上有一个 UIMenu,我想检测用户何时在 UIMenu 外部点击(关闭)。但似乎 Apple 默认不支持此操作的任何委托。
因为当用户在外面点击时,我想更改按钮的图像。
Sample Image
我发现的一种相当老套的方法是继承 UIButton
并覆盖 contextMenuInteractionWillEndFor
.
class MyButton: UIButton {
override func contextMenuInteraction(_ interaction: UIContextMenuInteraction, willEndFor configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionAnimating?) {
super.contextMenuInteraction(interaction, willEndFor: configuration, animator: animator)
print("ending!")
}
}
contextMenuInteractionWillEndFor
是当您关闭 UIMenu
时调用的委托方法,但是如果您正在设置按钮的 menu
属性,按钮本身将变为UIContextMenuInteraction
的代表,你不能将它设置为其他东西,这就是为什么你必须继承 UIButton
.
将此与使用 addInteraction
添加上下文菜单时进行比较,您可以控制 UIContextMenuInteractionDelegate
。
我的应用程序上有一个 UIMenu,我想检测用户何时在 UIMenu 外部点击(关闭)。但似乎 Apple 默认不支持此操作的任何委托。 因为当用户在外面点击时,我想更改按钮的图像。 Sample Image
我发现的一种相当老套的方法是继承 UIButton
并覆盖 contextMenuInteractionWillEndFor
.
class MyButton: UIButton {
override func contextMenuInteraction(_ interaction: UIContextMenuInteraction, willEndFor configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionAnimating?) {
super.contextMenuInteraction(interaction, willEndFor: configuration, animator: animator)
print("ending!")
}
}
contextMenuInteractionWillEndFor
是当您关闭 UIMenu
时调用的委托方法,但是如果您正在设置按钮的 menu
属性,按钮本身将变为UIContextMenuInteraction
的代表,你不能将它设置为其他东西,这就是为什么你必须继承 UIButton
.
将此与使用 addInteraction
添加上下文菜单时进行比较,您可以控制 UIContextMenuInteractionDelegate
。