การแก้ไขอัตโนมัติ เป็นกลไกในตัวของ iOS ที่แก้ไขข้อผิดพลาดในการสะกดคำโดยอัตโนมัติเมื่อป้อนข้อความ UIKit จัดการพฤติกรรมการแก้ไขอัตโนมัติผ่านคุณสมบัติ autocorrectionType ในโปรโตคอล UITextInputTraits โดยรองรับสามโหมด: ค่าเริ่มต้น เปิดใช้งาน และปิดใช้งาน ตาม Apple Text Programming Guide (2025) การแก้ไขอัตโนมัติจะวิเคราะห์ข้อความที่ป้อนตามพจนานุกรมของระบบและการเรียนรู้ของเครื่องบนอุปกรณ์ ใช้ autocorrectionType สำหรับแต่ละฟิลด์ข้อความแยกกัน — ซึ่งช่วยให้ปรับพฤติกรรมให้เข้ากับลักษณะเฉพาะของข้อมูลที่ป้อน
ประเด็นสำคัญ
การแก้ไขอัตโนมัติ เป็นคุณสมบัติของระบบปฏิบัติการ iOS ที่แทนที่คำที่พิมพ์โดยอัตโนมัติด้วยทางเลือกที่ถูกต้องเมื่อตรวจพบข้อผิดพลาดในการสะกดคำ กลไกทำงานในระดับฟิลด์ข้อความ UIKit และพร้อมใช้งานในแอปพลิเคชันทั้งหมดที่ใช้องค์ประกอบการป้อนมาตรฐาน UITextField และ UITextView
หัวใจของการแก้ไขอัตโนมัติคือ โมเดลภาษา ที่ฝึกฝนจากตัวอย่างข้อความนับล้านสำหรับแต่ละภาษาที่รองรับ โมเดลทำงานบนอุปกรณ์อย่างสมบูรณ์ (on-device) ซึ่งรับประกันความเป็นส่วนตัวของข้อมูลที่ป้อน — ข้อความจะไม่ถูกส่งไปยังเซิร์ฟเวอร์ของ Apple เพื่อการวิเคราะห์ ทุกครั้งที่อัปเดต iOS โมเดลจะได้รับการปรับปรุงและขยายด้วยคำและกฎใหม่
การแก้ไขอัตโนมัติจะถูกเปิดใช้งาน โดยอัตโนมัติ สำหรับฟิลด์ข้อความทั้งหมด เว้นแต่นักพัฒนาจะปิดใช้งานอย่างชัดเจน ผู้ใช้สามารถปิดการแก้ไขอัตโนมัติได้ทั้งหมดในการตั้งค่าระบบ (การตั้งค่า > ทั่วไป > แป้นพิมพ์ > การแก้ไขอัตโนมัติ) แต่นักพัฒนาสามารถควบคุมพฤติกรรมนี้สำหรับฟิลด์แต่ละรายการผ่านคุณสมบัติ autocorrectionType
ตาม WWDC 2023 Session 204 Apple ได้นำเสนอโมเดลภาษาการแก้ไขอัตโนมัติที่ปรับปรุงแล้วโดยใช้ Transformer ซึ่งพิจารณาบริบทของทั้งประโยค ไม่ใช่แค่คำสุดท้าย ซึ่งลดการแก้ไขที่ผิดพลาดลง 30% เมื่อเทียบกับโมเดลก่อนหน้าที่ใช้ n-gram
UITextAutocorrectionType เป็นการแจงนับที่มีสามค่าซึ่งกำหนดพฤติกรรมการแก้ไขอัตโนมัติสำหรับฟิลด์ข้อความที่ระบุ แต่ละค่าถูกกำหนดผ่านคุณสมบัติ autocorrectionType ซึ่งเข้าถึงได้ใน Interface Builder และในโค้ดเมื่อสร้างฟิลด์
ค่า .default หมายความว่าฟิลด์สืบทอดการตั้งค่าการแก้ไขอัตโนมัติทั่วโลกจากพารามิเตอร์ระบบของแป้นพิมพ์ โหมดนี้แนะนำสำหรับฟิลด์ข้อความส่วนใหญ่เนื่องจากเคารพการเลือกของผู้ใช้ หากผู้ใช้ปิดการแก้ไขอัตโนมัติในการตั้งค่า ฟิลด์ที่มี .default ก็จะไม่ใช้เช่นกัน
ค่า .yes บังคับเปิดใช้งานการแก้ไขอัตโนมัติสำหรับฟิลด์โดยไม่ขึ้นกับการตั้งค่าระบบ โหมดนี้ควรใช้เฉพาะสำหรับฟิลด์ที่ความแม่นยำในการสะกดคำมีความสำคัญ — ตัวอย่างเช่น ในโปรแกรมแก้ไขข้อความ ฟิลด์ป้อนบันทึกหรือข้อความ Apple แนะนำให้ใช้ .yes ด้วยความระมัดระวัง เนื่องจากการบังคับเปิดใช้งานอาจขัดแย้งกับความคาดหวังของผู้ใช้
ค่า .no ปิดการแก้ไขอัตโนมัติสำหรับฟิลด์ที่ระบุ โหมดนี้จำเป็นสำหรับฟิลด์รหัสผ่าน (การป้อนข้อความที่ปลอดภัย) ที่อยู่อีเมล รหัสยืนยัน และคำค้นหา ในฟิลด์เหล่านี้ การแก้ไขอัตโนมัติไม่เพียงไร้ประโยชน์ แต่ยังเป็นอันตราย — สามารถแทนที่ข้อมูลที่ป้อนอย่างถูกต้องด้วยทางเลือกที่ผิดพลาด
| โหมด | ค่า | คำแนะนำ |
|---|---|---|
| .default | สืบทอดการตั้งค่าระบบ | ฟิลด์ป้อนข้อมูลส่วนใหญ่ |
| .yes | บังคับเปิดใช้งาน | โปรแกรมแก้ไขข้อความ, บันทึก |
| .no | บังคับปิดใช้งาน | รหัสผ่าน, อีเมล, ค้นหา, รหัส |
โมเดลภาษา ของการแก้ไขอัตโนมัติ iOS ใช้การรวมกันของพจนานุกรมแบบคงที่และโมเดลที่ฝึกแบบไดนามิก พจนานุกรมระบบมีคำที่ใช้บ่อยที่สุดสำหรับแต่ละภาษา ในขณะที่โมเดลภาษาที่ใช้ Transformer วิเคราะห์บริบทและความน่าจะเป็นในการแทนที่ โมเดลจะฝึกบนอุปกรณ์ตามข้อความที่ผู้ใช้ป้อน
ผู้ใช้สามารถ เพิ่มคำ ลงในพจนานุกรมส่วนตัวผ่านการตั้งค่าแป้นพิมพ์ (การตั้งค่า > ทั่วไป > แป้นพิมพ์ > การแทนที่ข้อความ) คำที่เพิ่มจะถูกบันทึกใน iCloud และซิงค์ระหว่างอุปกรณ์โดยใช้ Apple ID เดียวกัน ระบบจะไม่แก้ไขคำจากพจนานุกรมส่วนตัว ซึ่งสะดวกสำหรับชื่อ แบรนด์ และคำศัพท์ทางเทคนิค
สำหรับ โดเมนเฉพาะทาง — การแพทย์ กฎหมาย เทคนิค — พจนานุกรมมาตรฐานอาจมีคำศัพท์ไม่เพียงพอ ในแอปพลิเคชันดังกล่าว แนะนำให้ปิดการแก้ไขอัตโนมัติสำหรับฟิลด์ที่เกี่ยวข้อง หรือใช้การแทนที่ข้อความแบบกำหนดเองผ่านเมธอด UIResponder .replacementDictionary สำหรับ iOS 17+
ตาม Apple Machine Learning Research (2024) โมเดลการแก้ไขอัตโนมัติใหม่ที่ใช้สถาปัตยกรรม Transformer ประมวลผลโทเค็นบริบทสูงสุด 10 โทเค็น (เทียบกับ 3 โทเค็นในโมเดลก่อนหน้า) ซึ่งช่วยให้ระบุความตั้งใจของผู้ใช้ได้แม่นยำยิ่งขึ้น โมเดลพิจารณาไม่เพียงแต่การสะกดคำ แต่ยังรวมถึงโครงสร้างทางไวยากรณ์ของประโยค
Safe Keyboard เป็นโหมดการป้อนที่ได้รับการป้องกันซึ่งเปิดใช้งานโดยอัตโนมัติสำหรับฟิลด์ที่มี secureTextEntry = true ในโหมดนี้ การแก้ไขอัตโนมัติ การพิมพ์ตัวพิมพ์ใหญ่โดยอัตโนมัติ และการป้อนแบบทำนายจะถูกปิดโดยระบบโดยไม่ขึ้นกับค่าที่ตั้งไว้ของ autocorrectionType ระบบยังบล็อกการเข้าถึงพจนานุกรมผู้ใช้และการแทนที่ข้อความ
Safe Keyboard ป้องกัน การรั่วไหลของข้อมูลที่ป้อน ผ่านกลไกการแก้ไขอัตโนมัติ หากการแก้ไขอัตโนมัติทำงานสำหรับฟิลด์รหัสผ่าน ระบบอาจบันทึกรหัสผ่านที่ป้อนลงในพจนานุกรมผู้ใช้หรือส่งไปยังเซิร์ฟเวอร์ Apple เพื่อฝึกโมเดล Safe Keyboard รับประกันว่าข้อมูลลับจะไม่ออกจากแอปพลิเคชัน
สำหรับแอปพลิเคชันทางการเงิน Safe Keyboard จะเปิดใช้งานโดยอัตโนมัติสำหรับฟิลด์ที่มี secureTextEntry เท่านั้น สำหรับฟิลด์ป้อนหมายเลขบัตร วันหมดอายุ และรหัส CVV นักพัฒนาต้องปิดการแก้ไขอัตโนมัติด้วยตนเองเพิ่มเติมโดยตั้งค่า autocorrectionType = .no และ keyboardType = .numberPad หรือ .phonePad
เริ่มต้นด้วย iOS 17 Safe Keyboard รองรับ การป้องกันจากการสกัดกั้น ผ่านแป้นพิมพ์ของบุคคลที่สาม หากผู้ใช้ติดตั้งแป้นพิมพ์จาก App Store เมื่อเปิดใช้งาน secureTextEntry แป้นพิมพ์ระบบจะแทนที่แป้นพิมพ์ของบุคคลที่สามโดยอัตโนมัติ แม้ว่าจะถูกเลือกเป็นค่าเริ่มต้นก็ตาม ซึ่งมั่นใจได้ว่ารหัสผ่านถูกป้อนผ่านแป้นพิมพ์ระบบที่ปลอดภัยเท่านั้น
การจัดการ การแก้ไขอัตโนมัติ ใน Swift ดำเนินการผ่านคุณสมบัติ autocorrectionType ของออบเจ็กต์ UITextField และ UITextView คุณสมบัตินี้พร้อมใช้งานทั้งสำหรับการอ่านและการเขียน และสามารถเปลี่ยนแปลงแบบไดนามิกตามบริบทของการป้อน การกำหนดค่าผ่าน Interface Builder มีให้ในตัวตรวจสอบคุณลักษณะภายใต้ชื่อ Correction
let textField = UITextField()
textField.autocorrectionType = .no
สำหรับ แบบฟอร์มเข้าสู่ระบบ ควรปิดการแก้ไขอัตโนมัติสำหรับฟิลด์รหัสผ่านและเปิดใช้งานตามค่าเริ่มต้นสำหรับฟิลด์เข้าสู่ระบบ ฟิลด์อีเมลควรปล่อยไว้โดยไม่มีการแก้ไขอัตโนมัติ เนื่องจากสัญลักษณ์ @ และชื่อโดเมนมักถูกแทนที่อย่างไม่ถูกต้อง สำหรับฟิลด์ชื่อผู้ใช้ การแก้ไขอัตโนมัติสามารถเปิดใช้งานได้หากชื่อผู้ใช้เป็นคำที่อ่านได้
class RegistrationViewController: UIViewController {
@IBOutlet var nameField: UITextField!
@IBOutlet var emailField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
nameField.autocorrectionType = .yes
emailField.autocorrectionType = .no
emailField.textContentType = .emailAddress
}
}
สำหรับ UITextView การกำหนดค่าการแก้ไขอัตโนมัติจะดำเนินการในลักษณะเดียวกัน ซึ่งสำคัญอย่างยิ่งสำหรับฟิลด์ป้อนข้อความหลายบรรทัดสำหรับความคิดเห็น ข้อความ และบันทึก ซึ่งการแก้ไขอัตโนมัติให้ประโยชน์มากที่สุดแต่ก็อาจสร้างความไม่สะดวกเมื่อป้อนคำศัพท์เทคนิคหรือโค้ด
let textView = UITextView()
textView.autocorrectionType = .default
สำหรับ การเปลี่ยนแปลงแบบไดนามิก ของการแก้ไขอัตโนมัติ ให้ใช้ UITextFieldDelegate เมธอด textFieldDidBeginEditing จะถูกเรียกเมื่อฟิลด์ถูกเปิดใช้งาน และในนั้นคุณสามารถเปลี่ยน autocorrectionType ตามบริบทปัจจุบันหรือบทบาทของฟิลด์ ซึ่งอาจเปลี่ยนแปลงระหว่างการทำงานของแอปพลิเคชัน
ควรปิดการแก้ไขอัตโนมัติ ในฟิลด์ที่ความแม่นยำของข้อมูลที่ป้อนมีความสำคัญและระบบไม่สามารถระบุความตั้งใจของผู้ใช้ได้อย่างถูกต้อง กรณีหลัก: ฟิลด์รหัสผ่านและข้อมูลที่ปลอดภัย ฟิลด์ป้อนที่อยู่อีเมล สตริงค้นหา ฟิลด์ป้อนโค้ดและโค้ดโปรแกรม รวมถึงฟิลด์ที่มีรูปแบบข้อมูลที่ไม่ได้มาตรฐาน
สำหรับ แถบค้นหา (UISearchBar) การแก้ไขอัตโนมัติถูกปิดตามค่าเริ่มต้น ซึ่งสอดคล้องกับความคาดหวังของผู้ใช้ เมื่อค้นหา ผู้ใช้อาจป้อนคำที่ไม่สมบูรณ์ คำศัพท์เทคนิค หรือคำค้นหาในภาษาต่างๆ และการแก้ไขอัตโนมัติจะเป็นอุปสรรคเท่านั้น เช่นเดียวกันสำหรับฟิลด์ป้อน URL และชื่อโดเมน
ใน แอปส่งข้อความ และแอปสื่อสาร การแก้ไขอัตโนมัติมักจะเปิดใช้งาน แต่สำหรับการป้อนคำสแลง คำย่อ และคำศัพท์ที่ไม่เป็นทางการ อาจสร้างความไม่สะดวก ในกรณีเช่นนี้ ผู้ใช้สามารถปิดการแก้ไขอัตโนมัติผ่านการตั้งค่าแป้นพิมพ์ หรือนักพัฒนาสามารถให้สวิตช์ในอินเทอร์เฟซของแอปพลิเคชันโดยตรง
ตาม Human Interface Guidelines ของ Apple ควรปิดการแก้ไขอัตโนมัติสำหรับฟิลด์ใดๆ ที่ข้อมูลที่ป้อนอาจไม่พบในพจนานุกรมระบบ: หมายเลขคำสั่งซื้อ รหัสการจอง ตัวระบุ IMEI ที่อยู่ MAC หากฟิลด์รับข้อมูลตัวอักษรและตัวเลขในรูปแบบที่ไม่ได้มาตรฐาน — ให้ปิดการแก้ไขอัตโนมัติ
คำถามที่พบบ่อย
ไม่มีการปิดการแก้ไขอัตโนมัติในระดับโลกสำหรับทั้งแอปพลิเคชัน จำเป็นต้องตั้งค่า autocorrectionType = .no สำหรับแต่ละฟิลด์ข้อความแยกกัน หรือสร้างคลายย่อยของ UITextField ด้วยค่าที่แทนที่
โปรแกรมจำลอง ใช้โมเดลการป้อนที่เรียบง่ายจากแป้นพิมพ์ Mac โมเดลภาษาการแก้ไขอัตโนมัติไม่ทำงานบนโปรแกรมจำลอง — ใช้อุปกรณ์จริงสำหรับการทดสอบ
ผู้ใช้สามารถเพิ่มคำผ่าน การตั้งค่า > ทั่วไป > แป้นพิมพ์ > การแทนที่ข้อความ ไม่มี API สำหรับแอปพลิเคชันในการเพิ่มคำลงในพจนานุกรมการแก้ไขอัตโนมัติของระบบโดยทางโปรแกรม
ไม่ keyboardType ไม่ส่งผลต่อการแก้ไขอัตโนมัติ แม้แต่สำหรับแป้นพิมพ์ .numberPad การแก้ไขอัตโนมัติก็สามารถทำงานได้หากไม่ได้ปิดอย่างชัดเจนผ่าน autocorrectionType
แป้นพิมพ์ของบุคคลที่สาม มีกลไกการแก้ไขอัตโนมัติของตนเองและไม่ใช้ UITextAutocorrectionType ของระบบ พฤติกรรมขึ้นอยู่กับการนำไปใช้ของแป้นพิมพ์นั้นๆ
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม