UITextField ประเภทตัวพิมพ์ใหญ่อัตโนมัติ - แอพ iPhone


113

มีวิธีตั้งค่า autocapitalizationType เพื่อUITextFieldให้อักษรตัวแรกของแต่ละคำเป็นตัวพิมพ์ใหญ่ตามค่าเริ่มต้นหรือไม่?

นี่คือตัวอย่างของสิ่งที่ฉันต้องการ


45
ในทางกลับกันมันเป็นเรื่องดีที่สามารถ google 'UITextField Capitalization' และมีป๊อปอัปนี้ภายใน 2 วินาทีแทนที่จะเสียเวลาหนึ่งนาทีในการเปิดเอกสารและสแกนหาสิ่งนี้ เอกสาร StackOverflow IS
Shaun Budhram

1
การสะดุดกับคำถามเช่นนี้ทำให้ฉันมีความสุขที่ 1) ผู้คนสามารถถามคำถามโดยตรงที่สอดคล้องกันได้ (ไม่ว่าจะอยู่ในขอบเขตใด) และ 2) ผู้คนแสดงความคิดเห็นที่ดีที่สุด ***
Will Von Ullrich

คำตอบ:


238

ใช้ textField.autocapitalizationType = UITextAutocapitalizationTypeWords;

สำหรับข้อมูลเพิ่มเติมโปรดอ่าน: UITextInputTraits Protocol Reference


2
ไม่ได้ช่วยอะไรหากคุณวางข้อความลงในฟิลด์ ในกรณีนี้ให้มอบหมายการป้อนข้อความและแทนที่ตัวอักษรตัวแรกของแต่ละคำ
HotJard

คุณสนใจที่จะอธิบาย HotJard เพิ่มเติมหรือไม่? ฉันต้องการทราบวิธีการวางข้อความและเพิ่มทุนอัตโนมัติ
vnchopra

5
ไม่ได้ผลฉันลองใช้กับ Xcode 6 iOS 8 Swift ฉันทำในโค้ดและตัวสร้างอินเทอร์เฟซไม่ได้ผล
Van Du Tran

10
ตรวจสอบให้แน่ใจว่าแป้นพิมพ์ในตัวสร้างอินเทอร์เฟซถูกตั้งค่าเป็นค่าเริ่มต้น มิฉะนั้นจะไม่ทำงาน
OscarVGG

3
ตรวจสอบให้แน่ใจว่าคุณได้เปิดใช้งานการเพิ่มจำนวนเงินอัตโนมัติในการตั้งค่าระบบปฏิบัติการ (การตั้งค่า -> ทั่วไป -> แป้นพิมพ์) ค่าการตั้งค่า iOS จะแทนที่ทุกสิ่งที่คุณตั้งไว้ในช่องข้อความ
Lope

38

autocapitalizationTypeสิ่งที่เราต้องการจะทำคือการตั้งค่าของฟิลด์ข้อความ

วัตถุประสงค์ -C:

self.textfield.autocapitalizationType = UITextAutocapitalizationTypeWords

รวดเร็ว:

self.textfield.autocapitalizationType = .words

มีตัวเลือกบางอย่างที่นี่:

ใส่คำอธิบายภาพที่นี่

  • allCharacters เหมือนกับการแตะสองครั้งที่ปุ่ม shift โดยทั่วไปคือ capslock
  • none ค่อนข้างอธิบายตัวเองแป้นพิมพ์จะไม่พยายามใช้ตัวพิมพ์ใหญ่
  • sentences จะพยายามใช้ตัวพิมพ์ใหญ่ของคำถัดไปหลังเครื่องหมายวรรคตอนท้าย
  • words จะพยายามใช้ตัวพิมพ์ใหญ่ทุกคำใหม่ (หลังเว้นวรรค) ซึ่งดูเหมือนว่าจะตรงกับสิ่งที่คุณกำลังมองหา

คุณสมบัตินี้ยังสามารถตั้งค่าได้จาก Attributes Inspector ของตัวสร้างอินเทอร์เฟซเมื่อคุณเลือกฟิลด์ข้อความที่เหมาะสม:

ใส่คำอธิบายภาพที่นี่

"การใช้อักษรตัวพิมพ์ใหญ่" เป็นตัวเลือกแรกในกลุ่มนี้ซึ่งเพิ่งผ่านการเลือกขนาดแบบอักษรขั้นต่ำสำหรับช่องข้อความ


8

การตั้งค่าcapitalizationคุณสมบัติเป็น "Words" จะแนะนำให้ผู้ใช้ป้อนคำที่เป็นตัวพิมพ์ใหญ่ ผู้ใช้สามารถแทนที่สิ่งนี้ได้โดยการยกเลิกการเลื่อนแป้นพิมพ์ สิ่งที่ดีที่สุดที่ต้องทำคือใช้อักษรตัวพิมพ์ใหญ่ในรหัส:

NSString *text = [myTextField.text capitalizedString];

สิ่งนี้จะทำให้สตริงทั้งหมดเป็นตัวพิมพ์ใหญ่ UITextAutocapitalizationTypeWords เพียงอักษรตัวพิมพ์ใหญ่ตัวแรกในแต่ละคำที่พิมพ์
เจ

แม้ว่านี่จะไม่ใช่สิ่งที่ OP ต้องการ แต่ฉันก็พบว่ามันมีประโยชน์จริงๆ! ฉันมี NSString บันทึกไว้ที่ไหนสักแห่งซึ่งเป็นตัวพิมพ์ใหญ่ทั้งหมด ฉันต้องการเปรียบเทียบข้อความของ UITextField กับสตริงต้นฉบับและการใช้คำแนะนำของคุณช่วยให้ฉันไม่ต้องอธิบายสิ่งต่าง ๆ ให้กับผู้ใช้ของฉัน (ฉันปล่อยให้ Objective c ทำงานทั้งหมด
:)

7

ใช่. บน InterfaceBuilder บนตัวตรวจสอบแอตทริบิวต์ textField คุณสามารถตั้งค่าคุณสมบัติตัวพิมพ์ใหญ่เป็น Words ได้


6

มีคำตอบสำหรับ Obj-C ฉันมาที่นี่เพื่อ Swift;

textField.autocapitalizationType = UITextAutocapitalizationType.words

หรือวิธีที่สั้นกว่า

textField.autocapitalizationType = .words

ฉันทดสอบ .words และ. allCharacters บนโปรแกรมจำลองมันใช้งานได้ ใน iPhone X ที่เชื่อมต่อจะไม่มี Xcode 10.1, iPhone 12.1.1
geohei

1
ฉันจะไม่ทำงานหากในการตั้งค่า -> ทั่วไป -> การแก้ไขอัตโนมัติ / การใช้อักษรตัวพิมพ์ใหญ่อัตโนมัติปิดอยู่
Sheetal Shinde

1

คุณสามารถทำได้ในรูปแบบ Storyboard หรือไฟล์. xib เพียงแค่เลือกฟิลด์ข้อความและในตัวตรวจสอบแอตทริบิวต์ทางด้านขวาจะมีส่วนการใช้อักษรตัวพิมพ์ใหญ่ซึ่งคุณสามารถเลือกสิ่งที่เหมาะกับคุณได้ ในกรณีของคุณให้ใช้อักษรตัวพิมพ์ใหญ่เป็น "Words"


0

ใน Xamarin.ios / Monotouch สิ่งนี้ใช้ได้กับฉัน:

textField.AutocapitalizationType = UITextAutocapitalizationType.Words;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.