Text Content Type: ประเภทเชิงความหมายและ UIKit

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-07-07 เวลาอ่าน: 8 นาที

Text Content Type เป็นกลไกของ iOS ที่บอกระบบว่าช่องข้อความคาดหวังข้อมูลประเภทใด UIKit มีค่าคงที่ UITextContentType สำหรับทำเครื่องหมายช่องป้อนข้อมูล: อีเมล รหัสผ่าน โทรศัพท์ ชื่อผู้ใช้ และประเภทเชิงความหมายอื่นๆ อีกหลายสิบประเภท ตาม Apple Human Interface Guidelines (2025) การกำหนดประเภทเนื้อหาที่ถูกต้องช่วยเพิ่มความเร็วในการกรอกแบบฟอร์มได้ถึง 40% ผ่านการเติมข้อความอัตโนมัติและแป้นพิมพ์แบบปรับเปลี่ยนได้ ใช้ UITextContentType ในทุกช่องข้อความ — ช่วยปรับปรุงประสบการณ์ผู้ใช้และลดข้อผิดพลาดในการป้อนข้อมูล

ประเด็นสำคัญ

  • Text Content Type คือป้ายกำกับเชิงความหมายสำหรับ UITextField และ UITextView ที่ระบุประเภทของข้อมูลที่คาดหวัง
  • UITextContentType ประกอบด้วยประเภทที่กำหนดไว้ล่วงหน้ามากกว่า 30 ประเภท: อีเมล โทรศัพท์ รหัสผ่าน ที่อยู่ ชื่อ นามสกุล และอื่นๆ
  • การเติมข้อความอัตโนมัติ จะทำงานเมื่อระบุประเภทเนื้อหาอย่างถูกต้องเท่านั้น — ระบบจะจับคู่ช่องกับข้อมูลจากพวงกุญแจ
  • แป้นพิมพ์ ปรับตามประเภท: สำหรับอีเมลจะแสดง @ สำหรับโทรศัพท์จะแสดงรูปแบบตัวเลข
  • ความปลอดภัย — ใช้ประเภทที่เหมาะสมสำหรับรหัสผ่านและรหัสแบบใช้ครั้งเดียวเพื่อเปิดใช้งานการรวมกับ iCloud Keychain

Text Content Type คืออะไร?

Text Content Type (UITextContentType) คือคุณสมบัติของช่องข้อความ UIKit ที่บอก iOS ว่าช่องป้อนข้อมูลคาดหวังข้อมูลเชิงความหมายประเภทใด ระบบใช้ข้อมูลนี้เพื่อสองวัตถุประสงค์: การเลือกรูปแบบแป้นพิมพ์ที่เหมาะสมและการเปิดใช้งานกลไกการเติมข้อความอัตโนมัติจากพวงกุญแจ (iCloud Keychain)

iOS 5 เปิดตัวประเภทเชิงความหมายรุ่นแรก และใน iOS 17 ชุด UITextContentType ได้ขยายเป็น 34 ค่าคงที่ รวมถึงประเภทใหม่สำหรับรหัสแบบใช้ครั้งเดียว รหัสไปรษณีย์ และชื่อถนน แต่ละค่าคงที่แทนสตริงที่ระบบจับคู่กับกฎการประมวลผลภายใน

กลไกนี้ทำงานในระดับ UITextInputTraits — โพรโทคอลที่ UITextField, UITextView และ UISearchBar สืบทอดมา ซึ่งหมายความว่าประเภทเนื้อหาพร้อมใช้งานในองค์ประกอบอินพุตมาตรฐานทั้งหมดโดยไม่ต้องกำหนดค่าเพิ่มเติม

ตาม WWDC 2024 Session 101 Apple แนะนำให้ระบุประเภทเนื้อหาสำหรับทุกช่องข้อความในอินเทอร์เฟซ — แม้ว่าจะไม่ได้คาดหวังการเติมข้อความอัตโนมัติก็ตาม การทำเครื่องหมายเองช่วยให้ VoiceOver ประกาศวัตถุประสงค์ของช่องได้อย่างถูกต้องสำหรับผู้ใช้ที่มีความบกพร่อง

ประเภท UITextContentType ที่มีให้ใช้งาน

UIKit มีลำดับชั้นของประเภทที่แบ่งตามหมวดหมู่ กลุ่มหลักประกอบด้วย ข้อมูลการระบุตัวตน (ชื่อ นามสกุล ชื่อผู้ใช้) ข้อมูลติดต่อ (อีเมล โทรศัพท์ ที่อยู่) และข้อมูลประจำตัว (รหัสผ่าน รหัสแบบใช้ครั้งเดียว) แต่ละกลุ่มจะเปิดใช้งานกลไกการเติมข้อความอัตโนมัติที่แตกต่างกัน

ข้อมูลติดต่อ

กลุ่ม ประเภทติดต่อ ประกอบด้วย `.emailAddress`, `.telephoneNumber`, `.fullStreetAddress` และ `.city` ประเภทเหล่านี้เปิดใช้งานการเติมข้อความอัตโนมัติจากรายชื่อติดต่อและ iCloud Keychain ช่องที่มีประเภท `.emailAddress` จะแนะนำที่อยู่อีเมลที่ป้อนก่อนหน้าโดยอัตโนมัติ ในขณะที่ `.telephoneNumber` จะแนะนำหมายเลขโทรศัพท์จากสมุดที่อยู่

ข้อมูลประจำตัว

สำหรับช่องเข้าสู่ระบบมี .username, .password และ .newPassword ประเภท .username เปิดใช้งานตัวจัดการรหัสผ่าน iCloud ซึ่งเสนอข้อมูลประจำตัวที่บันทึกไว้ ช่องที่มีประเภท .newPassword จะเริ่มสร้างรหัสผ่านที่รัดกุมผ่าน iCloud Keychain เมื่อป้อนข้อมูลครั้งแรก

ประเภทเฉพาะ iOS 17+

ตั้งแต่ iOS 17 เป็นต้นไป Apple ได้เพิ่ม .oneTimeCode สำหรับรหัสยืนยันทาง SMS และ .shipmentTrackingNumber สำหรับติดตามพัสดุ ประเภท .oneTimeCode จดจำรหัสจากข้อความโดยอัตโนมัติและเสนอในแถบ QuickType โดยไม่ต้องเปิดแอปข้อความ

หมวดหมู่ประเภทiOS
การระบุตัวตน.name, .givenName, .familyName, .nickname5+
รายชื่อติดต่อ.emailAddress, .telephoneNumber, .fullStreetAddress5+
ข้อมูลประจำตัว.username, .password, .newPassword5+
ตำแหน่งที่ตั้ง.location, .city, .state, .postalCode10+
ข้อมูลบัตร.creditCardNumber, .creditCardSecurityCode12+
รหัสแบบใช้ครั้งเดียว.oneTimeCode17+

แต่ละประเภทแสดงด้วยค่าคงที่สตริง แต่ควรเปรียบเทียบโดยใช้ตัวดำเนินการ == ไม่ใช่ผ่าน rawValue iOS อาจเพิ่มประเภทใหม่ในเวอร์ชันอนาคต ดังนั้นให้ใช้สาขา default ในคำสั่ง switch-case เสมอ

การปรับแป้นพิมพ์ตามประเภทเนื้อหา

UIKeyboardType และ UITextContentType ทำงานร่วมกัน: ประเภทแป้นพิมพ์กำหนดรูปแบบแป้นพิมพ์ ในขณะที่ประเภทเนื้อหาเพิ่มปุ่มเพิ่มเติมในแถบ QuickType หากตั้งค่าประเภทเนื้อหา iOS อาจแทนที่ประเภทแป้นพิมพ์เพื่อการป้อนข้อมูลที่เหมาะสมที่สุด ตัวอย่างเช่น ด้วยประเภท `.emailAddress` แป้นพิมพ์จะแสดงสัญลักษณ์ @ บนเลเยอร์หลักโดยอัตโนมัติ

สำหรับช่องที่มีประเภท .telephoneNumber iOS จะสลับแป้นพิมพ์เป็นรูปแบบโทรศัพท์โดยไม่ขึ้นกับประเภทแป้นพิมพ์ที่ตั้งไว้ พฤติกรรมนี้ไม่สามารถปิดใช้งานได้ — ระบบถือว่าลำดับความสำคัญของประเภทเนื้อหาสูงกว่าการกำหนดค่าแป้นพิมพ์ที่ชัดเจน นักพัฒนาไม่จำเป็นต้องกำหนดค่าคุณสมบัติทั้งสอง

ประเภท .URL และ .emailAddress เพิ่มปุ่ม .com และ @ บนแป้นพิมพ์ตามลำดับ ประเภท .decimalPad กับประเภทเนื้อหา .creditCardNumber จะแสดงแป้นพิมพ์ตัวเลขพร้อมตัวคั่นทศนิยม ซึ่งสะดวกสำหรับการป้อนจำนวนเงินและหมายเลขบัตร ตาม Apple Human Interface Guidelines ผู้ใช้คาดหวังว่าแป้นพิมพ์จะตรงกับประเภทของข้อมูลที่ป้อน ไม่ใช่ในทางกลับกัน

ข้อยกเว้นคือ .oneTimeCode — ประเภทนี้ไม่เปลี่ยนรูปแบบแป้นพิมพ์ แต่เปิดใช้งานแถบ QuickType พร้อมรหัสจาก SMS ผู้ใช้เห็นคำแนะนำรหัสเหนือแป้นพิมพ์และสามารถแทรกได้ด้วยการแตะครั้งเดียว กลไกนี้ทำงานเฉพาะกับช่องที่กลายเป็น first responder หลังจากได้รับ SMS

การเติมข้อความอัตโนมัติและพวงกุญแจ

การเติมข้อความอัตโนมัติ ใน iOS ใช้ Text Content Type เพื่อจับคู่ช่องป้อนข้อมูลกับข้อมูลจาก iCloud Keychain และ ASCredentialProviderViewController ระบบวิเคราะห์ช่องทั้งหมดบนหน้าจอ กำหนดประเภทเชิงความหมาย และเสนอข้อมูลที่บันทึกไว้ที่เกี่ยวข้อง หากไม่ได้ระบุประเภทอย่างถูกต้อง การเติมข้อความอัตโนมัติจะไม่เปิดใช้งาน

เพื่อให้การเติมข้อความอัตโนมัติทำงาน ต้องปฏิบัติตามเงื่อนไขสามประการ หนึ่ง ช่องต้องมี UITextContentType ที่ถูกต้อง สอง หน้าจอต้องมีอย่างน้อยสองช่องที่มีประเภทต่างกัน (เช่น .username และ .password) สาม แอปต้องรองรับ Associated Domains กับสิทธิ์ webcredentials สำหรับการซิงค์กับเว็บไซต์

พวงกุญแจ (Keychain) ใช้ประเภทเนื้อหาเพื่อจำแนกบันทึกที่บันทึกไว้ หากช่องถูกทำเครื่องหมายเป็น .password ระบบจะบันทึกค่าที่ป้อนใน iCloud Keychain และเสนอในการเข้าสู่ระบบครั้งถัดไป ช่องที่มีประเภท .creditCardNumber จะถูกบันทึกใน Wallet โดยอัตโนมัติหลังจากการยืนยันด้วย Face ID

สำหรับรหัสแบบใช้ครั้งเดียวประเภท .oneTimeCode iOS 17 ใช้กลไก AutoFill OTP ใหม่ ซึ่งไม่ต้องการการเข้าถึง SMS โดยตรง ระบบดักจับรหัสจากข้อความในระดับระบบปฏิบัติการและส่งต่อไปยังแอปผ่านแถบ QuickType โดยข้ามการอ่านเนื้อหาข้อความโดยแอป

ตัวอย่างการใช้งานใน Swift

การกำหนดค่า Text Content Type พื้นฐานใน Swift ทำได้ผ่านคุณสมบัติ textContentType ในโค้ดหรือผ่าน Interface Builder ในโค้ด การกำหนดค่าคงที่ใช้หนึ่งบรรทัด ในขณะที่ใน IB สามารถเลือกประเภทที่ต้องการจากรายการแบบเลื่อนลงในตัวตรวจสอบคุณสมบัติ

swift
let emailField = UITextField()
emailField.textContentType = .emailAddress
emailField.placeholder = "example@domain.com"

let passwordField = UITextField()
passwordField.isSecureTextEntry = true
passwordField.textContentType = .newPassword

สำหรับ การสร้างแบบฟอร์มเข้าสู่ระบบโดยโปรแกรม พร้อมการเติมข้อความอัตโนมัติ ให้ใช้ทั้งสองช่องที่มีประเภทเนื้อหาต่างกัน ระบบจะเชื่อมโยงเป็นชื่อผู้ใช้และรหัสผ่านโดยอัตโนมัติ หากแอปรองรับการเข้าสู่ระบบด้วยชีวมาตร ให้เพิ่มช่องที่มีประเภท .username เพื่อการจดจำบัญชีที่ถูกต้อง

swift
class LoginViewController: UIViewController {

    @IBOutlet var usernameField: UITextField!
    @IBOutlet var passwordField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        usernameField.textContentType = .username
        passwordField.textContentType = .password
        passwordField.autocorrectionType = .no
    }
}

สำหรับช่องป้อน รหัสแบบใช้ครั้งเดียว จาก SMS ให้ระบุประเภท .oneTimeCode ระบบจะแนะนำรหัสในแถบ QuickType โดยอัตโนมัติหลังจากได้รับ นักพัฒนาไม่จำเป็นต้องขอสิทธิ์การอ่าน SMS หรือดำเนินการแยกวิเคราะห์ข้อความแบบกำหนดเอง

swift
let otpField = UITextField()
otpField.textContentType = .oneTimeCode
otpField.keyboardType = .numberPad
otpField.placeholder = "Code from SMS"

สำหรับ iOS 17+ ประเภท .oneTimeCode รองรับการเติมข้อความอัตโนมัติโดยไม่ต้องโฟกัสที่ช่อง หากผู้ใช้ได้รับ SMS พร้อมรหัส iOS จะเสนอรหัสบนหน้าจอล็อค และหลังจากปลดล็อค รหัสจะถูกแทรกโดยอัตโนมัติลงในช่องที่ใช้งานอยู่ซึ่งมีประเภทเนื้อหาที่เกี่ยวข้อง

คำแนะนำในการเลือกประเภท

การเลือกประเภทที่ถูกต้อง ส่งผลโดยตรงต่อการแปลงแบบฟอร์มและประสบการณ์ผู้ใช้ Apple แนะนำอย่างยิ่งให้ระบุประเภทที่เฉพาะเจาะจงที่สุดที่มีอยู่ ตัวอย่างเช่น ใช้ .givenName สำหรับช่องชื่อแทน .name ทั่วไป — ซึ่งช่วยให้ระบบแนะนำการเติมข้อความอัตโนมัติจากรายชื่อติดต่อด้วยชื่อที่ถูกต้อง

หลีกเลี่ยง ข้อผิดพลาดทั่วไป — การตั้งค่า .emailAddress สำหรับช่องชื่อผู้ใช้ หากแอปใช้อีเมลเป็นชื่อเข้าสู่ระบบ ให้ระบุ .username สำหรับช่องเข้าสู่ระบบและ .password สำหรับช่องรหัสผ่าน ประเภท .emailAddress มีไว้สำหรับการป้อนอีเมลเป็นข้อมูลติดต่อเท่านั้น ไม่ใช่เป็นตัวระบุ

สำหรับแบบฟอร์มที่มี หลายช่อง ประเภทเดียวกัน (เช่น ที่อยู่อีเมลสองที่) ให้ตั้งค่าคุณสมบัติ .textContentType สำหรับแต่ละช่อง แต่เพิ่มค่า accessibilityIdentifier ที่แตกต่างกัน ซึ่งช่วยให้ VoiceOver ประกาศช่องได้อย่างถูกต้อง แม้ว่าระบบเติมข้อความอัตโนมัติอาจแนะนำค่าเดียวกันสำหรับทั้งสองช่อง

ทดสอบการเติมข้อความอัตโนมัติบน อุปกรณ์จริง ที่มีพวงกุญแจที่มีข้อมูล โปรแกรมจำลองไม่รองรับ iCloud Keychain อย่างสมบูรณ์ และพฤติกรรมการเติมข้อความอัตโนมัติอาจแตกต่างกัน ตาม Apple Developer Forums (2025) ปัญหาการเติมข้อความอัตโนมัติที่พบบ่อยที่สุดเกิดจากประเภทเนื้อหาที่ระบุไม่ถูกต้อง

คำถามที่พบบ่อย

textContentType แตกต่างจาก keyboardType อย่างไร?

UITextContentType กำหนดประเภทข้อมูลเชิงความหมาย ในขณะที่ UIKeyboardType กำหนดรูปแบบแป้นพิมพ์ ประเภทเนื้อหาสามารถแทนที่ประเภทแป้นพิมพ์เพื่อการป้อนข้อมูลที่เหมาะสมที่สุด

ประเภทใดที่เปิดใช้งานการเติมข้อความอัตโนมัติจาก iCloud Keychain?

การเติมข้อความอัตโนมัติถูกเปิดใช้งานโดยประเภท .username, .password, .newPassword, .emailAddress, .telephoneNumber และ .creditCardNumber ระบบจับคู่ประเภทเหล่านี้กับข้อมูลจากพวงกุญแจ

Text Content Type ทำงานใน WKWebView หรือไม่?

ใช่ WKWebView รองรับ Text Content Type สำหรับช่อง HTML ที่มีแอตทริบิวต์ autocomplete iOS จับคู่แอตทริบิวต์ autocomplete กับประเภท UITextContentType โดยอัตโนมัติ

ฉันจำเป็นต้องระบุประเภทเนื้อหาสำหรับ UITextView หรือไม่?

ใช่ UITextView ก็สืบทอด UITextInputTraits และรองรับคุณสมบัติ textContentType ซึ่งมีประโยชน์สำหรับช่องป้อนข้อมูลหลายบรรทัดสำหรับข้อมูลติดต่อ

จะเกิดอะไรขึ้นหากระบุประเภทไม่ถูกต้อง?

ระบบอาจแนะนำ ข้อมูลที่ไม่ถูกต้อง สำหรับการเติมข้อความอัตโนมัติหรือไม่แนะนำอะไรเลย ตัวอย่างเช่น ช่องชื่อผู้ใช้ที่มีประเภท .emailAddress อาจแนะนำอีเมลแทนชื่อเข้าสู่ระบบ

สรุป

  • Text Content Type คือป้ายกำกับเชิงความหมายสำหรับช่องป้อนข้อมูล iOS ที่กำหนดประเภทของข้อมูลที่คาดหวัง
  • UITextContentType ประกอบด้วยค่าคงที่มากกว่า 30 ค่าสำหรับหมวดหมู่ต่างๆ: รายชื่อติดต่อ ข้อมูลประจำตัว ตำแหน่งที่ตั้ง ข้อมูลการชำระเงิน
  • แป้นพิมพ์ ปรับตามประเภทเนื้อหาโดยอัตโนมัติ แสดงอักขระและรูปแบบที่จำเป็น
  • การเติมข้อความอัตโนมัติจาก iCloud Keychain เปิดใช้งานเมื่อระบุประเภทช่องอย่างถูกต้องเท่านั้น
  • กลไก OTP ใน iOS 17+ แทรกรหัสจาก SMS โดยอัตโนมัติโดยไม่ต้องเข้าถึงข้อความ
  • VoiceOver ใช้ประเภทเนื้อหาเพื่อประกาศวัตถุประสงค์ของช่องอย่างถูกต้อง
  • คำแนะนำ — ระบุประเภทที่เฉพาะเจาะจงที่สุดสำหรับแต่ละช่องและทดสอบการเติมข้อความอัตโนมัติบนอุปกรณ์จริง

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม