2013-07-26 7 views
6

आप ऑटोकैपिटाइजेशन सेट कर सकते हैं UITextField की टाइप टाइप करें ताकि सभी इनपुट ऊपरी मामले में हो। मुझे लगता है कि सिम्युलेटर पर ठीक काम करता है (जब वास्तव में सिम्युलेटर की कीपैड टैप करता है, मैक के कीबोर्ड नहीं), लेकिन डिवाइस पर नहीं? सब कुछ लोअरकेस रहता है।UITextField autocapitalization टाइप करें UITextAutocapitalizationTypeAllCharacters डिवाइस पर काम नहीं कर रहे हैं

UICatalog डेमो मैं textFieldNormal विधि को जोड़ा गया है:

textFieldNormal.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters; 

जोड़ा गया एक प्रतिनिधि भी UITextField के लिए वास्तविक autocapitalizationType प्रदर्शित करने के लिए:

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    NSLog(@"textField.autocapitalizationType=%d", textField.autocapitalizationType); 
} 

यह ठीक से 3 प्रदर्शित करेगा (= UITextAutocapitalizationTypeAllCharacters), लेकिन जो भी आप टैप करते हैं वह लोअरकेस रहता है। मैं क्या खो रहा हूँ?

उत्तर

19

स्पष्ट रूप से यह एक डिवाइस सामान्य सेटिंग्स समस्या है: सेटिंग्स -> सामान्य -> ​​कीबोर्ड -> टेक्स्टफिल्ल्ड की सेटिंग का सम्मान करने के लिए ऑटो-कैपिटलेशन चालू होना चाहिए .autocapitalization सभी ऊपरी मामले में टाइप करें, अन्यथा संपत्ति को सेट करना स्पष्ट रूप से अनदेखा किया जाता है। अगर मैं इसे अपेक्षित कामों पर स्विच करता हूं।

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    if (range.length == 0) { // not deleting , but adding a char   
     textField.text = [textField.text stringByAppendingString:[string uppercaseString]]; 
     return NO; 
    } 

    return YES; 
} 

यह केवल काम करता है अगर आप पाठ के अंत में एक प्रतीक को सम्मिलित करने का प्रयास करें:

0

आप इस पाठ फ़ील्ड प्रतिनिधि की तरह कुछ की कोशिश कर सकते। आप अपने साथ

range.location

निभा सकता है और यह भी आप के रूप में यह अंत में हर जाना होगा कर्सर स्थिति के साथ खेलने की जरूरत होगी बीच में पाठ के साथ खेलना चाहते हैं चाहिए समय ...

मुझे उम्मीद है कि यह किसी की मदद करेगा।

संबंधित मुद्दे