我在我的项目中使用 SwiftMessage。当屏幕上显示特定消息时,我希望当用户在消息视图之外(消息视图上的任何其他位置)点击时,会发生一些操作。我怎样才能做到这一点?
更新
我忘了说我正在使用带有一个按钮的 SwiftMessage。
我在我的项目中使用 SwiftMessage。当屏幕上显示特定消息时,我希望当用户在消息视图之外(消息视图上的任何其他位置)点击时,会发生一些操作。我怎样才能做到这一点?
更新
我忘了说我正在使用带有一个按钮的 SwiftMessage。
不幸的是,没有办法在MessageView
.
但是,如果您dimMode
是(已启用点击外部关闭),您可以使用ofinteractive
轻松捕获.willHide
和.didHide
事件:eventListeners
SwiftMessages.Config
let view = MessageView.viewFromNib(layout: .cardView)
var config = SwiftMessages.defaultConfig
config.dimMode = .gray(interactive: false)
config.eventListeners.append { event in
switch event {
case .willHide:
// Handle will hide
case .didHide:
// Handle did hide
default:
break
}
}
SwiftMessages.show(config: config, view: view)
这些事件将在MessageView
.
更新:在您的特定情况下,您的按钮与点击外部操作具有不同的操作,您可以使用以下内容:
func showMessageView(buttonHandler: @escaping () -> Void, dismiss: @escaping () -> Void) {
var buttonTapped = false
let view = MessageView.viewFromNib(layout: .cardView)
view.buttonTapHandler = { sender in
buttonHandler()
buttonTapped = true
}
var config = SwiftMessages.defaultConfig
config.dimMode = .gray(interactive: false)
config.eventListeners.append { event in
if !buttonTapped, event == .didHide {
dismiss()
}
}
SwiftMessages.show(config: config, view: view)
}
这样,当点击按钮时,dismiss
关闭将永远不会运行。