禁用UIAlertController框架外部的触摸以取消

时间:2018-06-06 13:26:21

标签: ios iphone swift cocoa-touch uialertcontroller

我的UIAlertController样式为ActionSheet

我已向其添加了cancel操作。

由于某些原因,当用户点击ActionSheet框之外时,警报就会被取消。

如何禁用此行为?我希望用户直接按下取消按钮。

1 个答案:

答案 0 :(得分:0)

swift 4 / Xcode 11

您好。要禁用用户交互(例如:点击取消按钮以外的任何位置),请在alert函数中调用present方法并将其设置为完成闭包,如下面的代码所示。

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

整个例子:

func alertMe() {

let alertController = UIAlertController(title: "Tapping Test", message: "User Interaction on the view is disabled", preferredStyle: .actionSheet)

let cancelAction = UIAlertAction(title: "cancel", style: UIAlertActionStyle.cancel) { UIAlertAction in

// do something/call someone/or nothing :)
NSLog("cancel Button is Pressed")

}

alertController.addAction(cancelAction)

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