2012-01-15 49 views
20

打開Apple的Calendar應用程序。當您爲新約會命名時,它會自動大寫第一個字母。它不使用'更正'式換出來做這件事。UITextField的大小寫

對於我的生活,我無法再現這種行爲。在IB中,我已將UITextField的大寫設置爲Word,但它似乎完全沒有效果。如果我打開糾錯,它會用大寫的版本替換這個詞,但這不太正確。

我是否需要通過檢查每個按鍵來代碼處理?這可能是微不足道的,除非我擔心所有我會錯過的角落案例,例如用戶手動使用「移位」來否定大小寫,或者刪除和重新輸入密鑰,在這種情況下,它不應該大寫。

或者也許有一種方法可以簡單地加載文本框,並按下shift鍵?這是實現它的常用方式嗎?

回答

22

您是使用模擬器還是實際設備?如果您使用模擬器,外殼將遵守計算機上物理鍵盤的移位和大寫鎖定狀態。

+0

我沒有忘記這個想法 - 只是等待,直到我有機會將我的手機 – 2012-01-22 14:27:15

+0

謝謝 - 確認。 – 2012-01-30 13:42:43

61

將大小寫設置爲Word應該這樣做,所以出現其他問題。你確定這是在你正在測試的實際UITextField上切換嗎?你確定你不是可能以某種方式覆蓋它的代碼?

[myTextField setAutocapitalizationType:UITextAutocapitalizationTypeWords]; 

還有一個例外(每the docs),其中,這將被忽略:您可以通過編程設置

有些鍵盤類型不支持自動大寫。具體而言, 如果keyboardType屬性中的值爲 ,則該選項將被忽略設置爲UIKeyboardTypeNumberPad,UIKeyboardTypePhonePad或 UIKeyboardTypeNamePhonePad。

這是否適用於您?

+16

UIKeyboardTypeNamePhonePad是它...但不是大多數名字大寫?爲什麼這個例外? – 2012-04-10 13:21:06

+2

這也是我的問題 - 爲什麼地球上不啓用NamePhonePad的大寫? – 2014-10-17 16:42:58

+0

謝謝,是的,這是問題所在。不好,蘋果有這個。 – nithinreddy 2015-03-10 11:59:22

14

我剛剛在我的應用程序中檢查過它,它已經在默認情況下做了大寫。行爲不是由您的應用程序代碼決定的,而是由全球iphone設置決定的。

開始iOS設置。去通用,然後鍵盤,那裏用戶可以選擇「自動大寫」。它關閉了嗎?

在我的情況下,它已打開,所以我的應用程序和日曆具有此功能,當我關閉它時,兩個應用程序都缺少此功能,因爲用戶決定他不需要此功能。

+0

對於iOS 7這是最好的答案+1 – 2013-10-25 12:26:42

4

資本禁用

textField.autocapitalizationType = UITextAutocapitalizationTypeNone; 

爲了利用所有字符

textField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters; 

爲了抓住句子

textField.autocapitalizationType = UITextAutocapitalizationTypeSentences; 

的第一個字符的所有單詞第一個字符的大小寫在sentense

textField.autocapitalizationType = UITextAutocapitalizationTypeWords; 
3

某些鍵盤忽略大小寫類型

有些鍵盤類型不支持自動大寫。具體而言,如果keyboardType屬性中的值設置爲UIKeyboardTypeNumberPad,UIKeyboardTypePhonePad或UIKeyboardTypeNamePhonePad,則忽略此選項。

More details on the developer reference

2

這裏是所有字符的雨燕2.0更新:

SomeTextField.autocapitalizationType = UITextAutocapitalizationType.AllCharacters 
0

我有資本性質相同的問題,我只是改變鍵盤類型爲默認,一切都開始工作作爲預期。在我的情況下,我以前曾將keyboardType設置爲不支持自動大寫的NamePhonePad。