2010-10-23 21 views

उत्तर

120
[myTextField addTarget:self 
       action:@selector(textFieldDidChange:) 
     forControlEvents:UIControlEventEditingChanged]; 
+18

अजीब, UIControlEventDidEnd और UIControlEventDidBegin के आधार पर, एक ग्रहण करेंगे कि यह UIControlEventValueChanged था ... वास्तव में UIControlEventValueChanged तो क्या करता है क्या? – Jarrod

19

वास्तव में, वहाँ UITextField के लिए कोई मूल्य नहीं ईवेंट परिवर्तित है, का उपयोग UIControlEventEditingChanged

+0

मैं नए लोगों –

8

मैं इस मुद्दे shouldChangeChractersInRange के व्यवहार को बदलने संकल्प लिया। यदि आप वापस नहीं करते हैं तो परिवर्तन आंतरिक रूप से आईओएस द्वारा लागू नहीं किए जाएंगे, इसके बजाय आपके पास इसे मैन्युअल रूप से बदलने और परिवर्तन के बाद कोई भी क्रिया करने का अवसर है।

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    //Replace the string manually in the textbox 
    textField.text = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
    //perform any logic here now that you are sure the textbox text has changed 
    [self didChangeTextInTextField:textField]; 
    return NO; //this make iOS not to perform any action 
} 
+2

ध्यान दें कि पाठ संपत्ति की स्थापना पाठ के अंत, संपादन प्रभावित हो सकता है – jarnoh

+0

यह अच्छी तरह से काम नहीं करेगा अगर उपयोगकर्ता बैकस्पेस हिट करने के लिए कर्सर ले जाने के होगा देखने के लिए मैं इसे यहाँ पोस्ट होगा सोचा। – Harris

1

तेजी के लिए यह काम आता है -

textField.addTarget(self, action: #selector(onTextChange), forControlEvents: UIControlEvents.EditingChanged) 
संबंधित मुद्दे