2012-10-01 17 views
8
- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    [textField selectAll:self]; 
} 
- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return YES;  
} 

उपर्युक्त में, टेक्स्टफ़ील्ड सही ढंग से चयन करता है लेकिन जब मैं कीबोर्ड से वापस आ जाता हूं और लगातार दूसरी बार टेक्स्ट फ़ील्ड टैप करता हूं, तो यह टेक्स्ट का चयन नहीं करता है। अगर मैं इसे लगातार नहीं चुनता हूं या यदि मैं कीबोर्ड से लौटने से पहले टेक्स्ट को अचयनित करता हूं, तो उस टेक्स्ट फ़ील्ड का अगला फोकस टेक्स्ट को सही तरीके से चुनता है।selectall uitextfield हमेशा सभी

उपर्युक्त मामले में मैं टेक्स्ट का चयन कैसे कर सकता हूं?

उत्तर

10

मैं (अगले runloop में selectAll आह्वान) एक सटीक समाधान पाया है:

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    [textField performSelector:@selector(selectAll:) withObject:textField afterDelay:0.f]; 
} 
+0

धन्यवाद, मैं इसका परीक्षण करूंगा जब मैं – shiggity

+0

कर सकता हूं आपको एक प्रतिभा होना चाहिए! यह आईओएस 6 और 7 पर एक बग है, और मैंने सोचा कि एकमात्र समाधान एक बग फाइल करना था, और एक फिक्स के लिए प्रतीक्षा करें। धन्यवाद! –

+2

वैसे भी एक बग दायर किया: # 15781101 "UITextField -selectAll: केवल हर दूसरे समय काम करता है"। –

2

मैं इस मुद्दे ग्रांड सेंट्रल डिस्पैच का उपयोग कर हल किया। आप पहले पैरामीटर के रूप में dispatch_async कॉल और dispatch_get_main_queue() के साथ [textField selectAll:self]; को लपेट सकते हैं।

dispatch_async(dispatch_get_main_queue()){ 
     // ... code you want to run on the main queue goes here 
    }