Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> IOS

จะยกเลิกการแจ้งเตือนด้วยการคลิกนอกการแจ้งเตือนใน iOS ได้อย่างไร


การทำความเข้าใจและใช้งาน UIAlert อาจเป็นเรื่องยากโดยเฉพาะหากคุณเพิ่งเริ่มใช้ iOS Development ในโพสต์นี้ เราจะมาดูกันว่าเราจะปิดการแจ้งเตือนได้อย่างไรเมื่อผู้ใช้แตะนอกช่องแจ้งเตือน

สำหรับการสาธิตนี้ เราจะใช้คลาส UIAlert เพื่อกำหนดค่าการแจ้งเตือนและแผ่นการดำเนินการด้วยข้อความที่คุณต้องการแสดงและการดำเนินการที่จะเลือก หลังจากกำหนดค่าตัวควบคุมการแจ้งเตือนด้วยการกระทำและรูปแบบที่คุณต้องการแล้ว ให้นำเสนอโดยใช้เมธอด present(_:animated:complete:) UIKit จะแสดงการแจ้งเตือนและแผ่นงานแบบโมเดอเรชันเหนือเนื้อหาของแอป

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้:https://developer.apple.com/documentation/uikit/uialertcontroller

มาเริ่มกันเลย

ขั้นตอนที่ 1 − เปิด Xcode และสร้างแอปพลิเคชันมุมมองเดียวและตั้งชื่อเป็น UIAlertSample

ขั้นตอนที่ 2 - ในหลัก กระดานเรื่องราวเพิ่มปุ่มเดียว และสร้าง @IBAction และตั้งชื่อว่า showAlert

@IBAction func showAlert(_ sender: Any) { }

โดยพื้นฐานแล้ว เมื่อเราแตะที่ปุ่ม การแจ้งเตือนจะปรากฏขึ้น เมื่อผู้ใช้แตะนอกการแจ้งเตือน การแจ้งเตือนจะถูกปิด

ขั้นตอนที่ 3 − การทำงานของปุ่มภายใน showAlert ขั้นแรกให้สร้างวัตถุ UIAlert ดังต่อไปนี้

let uialert = UIAlertController(title: "WELCOME", message: "Welcome to my tutorials, tap outside to dismiss the alert", preferredStyle: .alert)

ขั้นตอนที่ 4 − แสดงการแจ้งเตือนและเมื่อเสร็จสิ้นให้เพิ่มตัวเลือกดังที่แสดงด้านล่าง

self.present(uialert, animated: true, completion:{
   uialert.view.superview?.isUserInteractionEnabled = true
   uialert.view.superview?.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.dismissOnTapOutside)))
})

ขั้นตอนที่ 5 − เพิ่มฟังก์ชันตัวเลือก

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

ขั้นตอนที่ 6 − เรียกใช้แอปพลิเคชัน

import UIKit
class ViewController: UIViewController {
   override func viewDidLoad() {
      super.viewDidLoad()
   }
   @IBAction func showAlert(_ sender: Any) {
      let uialert = UIAlertController(title: "WELCOME", message: "Welcome to my tutorials, tap outside to dismiss the alert", preferredStyle: .alert)
      self.present(uialert, animated: true, completion:{
      uialert.view.superview?.isUserInteractionEnabled = true
      uialert.view.superview?.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.dismissOnTapOutside)))
      })
   }
   @objc func dismissOnTapOutside(){
      self.dismiss(animated: true, completion: nil)
   }
}