首页 > 解决方案 > 用计时器解除 UIAlertController

问题描述

UIAlertController.Style.actionSheet如果没有点击 OK 按钮,几秒钟后关闭。

我尝试在提出actionSheet调用方法以将其关闭后立即放置一个计时器,但它没有关闭它。

这是我的代码:

func showActionSheet(){
    
    let alert = UIAlertController(title: "Some Tile", message: "Some Message", preferredStyle: UIAlertController.Style.actionSheet)

    alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.cancel, handler: {
        action in
        self.closeSheetView()
    }))

    self.present(alert, animated: true, completion: nil)

    timer = Timer.scheduledTimer(timeInterval: 2 , target: self, selector: #selector(self.closeSheetView), userInfo: nil, repeats: false)
}

@objc func closeSheetView(){
    self.dismiss(animated: true, completion: nil)
}

仅供参考 - 该closeSheetView方法似乎被调用,但工作表视图没有关闭。

标签: iosswiftuikituialertcontroller

解决方案


我只是在我的项目中做它没有计时器我使用延迟,也许它会为你工作......!

let alert = UIAlertController(title: "", message: "alert disappears after 5 seconds", preferredStyle: .alert)
self.present(alert, animated: true, completion: nil)

// here it work for 5 sec
let when = DispatchTime.now() + 5
DispatchQueue.main.asyncAfter(deadline: when){
  // your code with delay
  alert.dismiss(animated: true, completion: nil)
}

推荐阅读