自动解除UIAlertController

Cri*_*s R 8 iphone swift uialertcontroller

我的应用程序有一个UILongPressGestureRecognizer,UIAlertController当用户触摸屏幕上的两个元素时,它会显示警报.目前,用户必须按下OK按钮才能解除警报,但是我想在0.5秒后自动关闭警报,因此用户不会损害他与应用程序的交互.

有没有办法做到这一点?

Abh*_*hek 9

您可以使用GCD的dispatch_after实现警报视图的自动关闭.

试试以下代码:

    let delay = 0.5 * Double(NSEC_PER_SEC)
    let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
    dispatch_after(time, dispatch_get_main_queue()) { () -> Void in
        self.dismissPopover()
    }
Run Code Online (Sandbox Code Playgroud)

dismissCategoryPopover()是一个自定义方法,将在0.5秒后自动调用以关闭警报视图.


Mar*_*ers 5

我有一个针对 Swift 2.1 更新的自定义函数,它使用 UIAlertController 来模拟Android 中的Toast功能。

func showToast(withMessage message:String) {
    let menu = UIAlertController(title: nil, message: nil, preferredStyle: .ActionSheet)
    let cancel = UIAlertAction(title: message, style: .Cancel, handler: nil)
    menu.addAction(cancel)
    self.presentViewController(menu, animated: true, completion: nil)
    let delay = 1.5 * Double(NSEC_PER_SEC)
    let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
    self.tableView.setEditing(false, animated: true)
    dispatch_after(time, dispatch_get_main_queue()) { () -> Void in
        self.dismissViewControllerAnimated(true, completion: nil)
    }
}
Run Code Online (Sandbox Code Playgroud)

这显示了 OP 的完整、有效的解决方案。