การทำความเข้าใจและใช้งาน 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) } }