在取消事件上点击视图时,实现不同的行为以消除UIAlertController操作表

时间:2018-10-17 23:01:32

标签: ios swift uialertcontroller

我正在尝试使“取消”按钮起作用并导航至上一个屏幕。我在操作表的外面按,取消事件仍在发生。

这是我的代码:

let alertController = UIAlertController(title: "searchEvent", message: nil, preferredStyle: .actionSheet)

alertController.addAction(UIAlertAction(title: "event 1", style: .default, handler: nil)

alertController.addAction(UIAlertAction(title: "event 2", style: .default, handler: nil)
alertController.addAction(UIAlertAction(title: "event 3", style: .default, handler: nil)

alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: {[weak self] (action) in
    self?.dismiss(animated: true, completion: nil)
}))

2 个答案:

答案 0 :(得分:0)

self.present(alertController, animated: true, completion: {
        alertController.view.superview?.subviews[0].isUserInteractionEnabled = false
    })

这将禁止用户在操作表之外点击任何行为

答案 1 :(得分:0)

如果您想要不同的行为来点击“取消”和点击“动作表”之外,前者则取消并关闭VC,后来只取消动作表,那么您需要将“取消”按钮样式更改为“取消”以外的其他样式,然后添加手势识别器至  self.actionSheet.view.superview?.subviews.first?

手势识别器块将关闭操作表 取消按钮块将关闭视图控制器。