2012-07-23 12 views
26

मैं सिर्फ a question कैसे एक UITextField में परिवर्तन नजर रखने के लिए के बारे में पूछा और इस प्रतिक्रिया मिली:पाठ फ़ील्ड में पूरा बदल स्ट्रिंग को जानने का: shouldChangeCharactersInRange: replacementString:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)replacementStr { 
    // Enable "Next" if you like what's entered in the replacementStr 
} 

यह काम करता है, लेकिन प्रतिस्थापन स्ट्रिंग पूरे नहीं है स्ट्रिंग, बस यह क्या जोड़ रहा है। मैं पूरी स्ट्रिंग कैसे प्राप्त कर सकता हूं? मेरा उद्देश्य यह देखना है कि टेक्स्ट फ़ील्ड में स्ट्रिंग खाली है या किसी निश्चित संख्या के बराबर है (विभिन्न परिदृश्यों में)।

कृपया ध्यान दें कि टेक्स्ट फ़ील्ड का आउटलेट इस मामले में काम नहीं करता है, क्योंकि इस विधि को फ़ील्ड में टेक्स्ट में बदलाव से पहले कहा जा रहा है।

+0

textField.text पूरी स्ट्रिंग है। कम से कम यह पुरानी स्ट्रिंग है। –

उत्तर

65
NSString * proposedNewString = [[textField text] stringByReplacingCharactersInRange:range withString:replacementString]; 
+1

क्या वे बैकस्पेस का उपयोग करते हैं? क्या यह अभी भी काम करेगा? जब मैंने संलग्न करने की कोशिश की तो यह काम नहीं किया। यदि वे बैकस्पेस हैं, तो कोई प्रतिस्थापन स्ट्रिंग नहीं है, लेकिन टेक्स्टफ़िल्ल्ड स्ट्रिंग एक कम होगी। यदि मैं एक गैर-शून्य संख्या की जांच कर रहा हूं, तो यह एक समस्या उत्पन्न कर सकता है, और टेक्स्टफ़िल्ल्ड कहता है, 5, और फिर वे बैकस्पेस। –

+3

हां, यह बैकस्पेस के लिए काम करता है। –

0
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    NSString * searchStr = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

// [textField2 setText:[textField1.text stringByReplacingCharactersInRange:range withString:string]]; 
    NSLog(@"%@",searchStr); 
    return YES; 
} 
9

स्विफ्ट संस्करण

स्विफ्ट में हम NSString को textField's पाठ कास्ट करने के लिए की जरूरत है। उपयोगी हो सकता है निम्नलिखित:

let newString = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string) 

स्विफ्ट 4

let newString = (textField.text! as NSString).replacingCharacters(in: range, with: string)