delegates - UITextField, automatically move to next after 1 character -
परिदृश्य: मेरे पास 4 UITextFields हैं जो केवल 1 वर्ण स्वीकार करते हैं। । आसान
समस्या: बाद मैं 1 चरित्र दर्ज करते हैं, मैं अगले TextField स्वचालित रूप से (अगले दबाए रखे यानी मैं UIKeyboardTypeNumberPad उपयोग कर रहा हूँ बिना सक्रिय करना चाहते हैं, और कोई अगला बटन theres (मुझे पता है। मैं वास्तव में एक अगला बटन प्रोग्राम के रूप में बना सकते हैं, लेकिन मैं जाने के लिए है कि अब तक, बस अगले क्षेत्र की जरूरत सक्रिय बनने के लिए स्वचालित रूप से करने के बाद 1 चरित्र दर्ज किया गया है चाहते हैं न
#define MAX_LENGTH 1 -। ( BOOL) पाठ फ़ील्ड: (UITextField *) textfield shouldChangeCharactersInRange: (NSRange) रेंज replacementString: (NSString *) स्ट्रिंग {NSCharacterSet * myCharSet = [NSCharacterSet characterSetWithCharactersInString: @ "0123456789"]; के लिए (int i = 0; मैं & LT; [स्ट्रिंग की लंबाई ]; i ++) {unichar ग = [स्ट्रिंग characterAtIndex: मैं], अगर ([myCharSet characterIsMember: ग]) {कोई वापसी;}} NSUInteger newLength = [textField.text लंबाई] [स्ट्रिंग लंबाई] - range.length; रिटर्न (न्यू लैंलेशन & gt; 1)? नहीं: हाँ;} - (BOOL) टेक्स्टफिल्टरश Ould वापसी: (UITextField *) टेक्स्टफिल्ड {if (textField == PC1) {[पीसी -2 बनना फर्स्टरस्पोंडर]; } और अगर (टेक्स्टफिल्ड == पीसी 2) {[पीसी 3 बन गयाफास्ट रेस्पॉन्डर]; } और अगर (टेक्स्टफिल्ड == पीसी 3) {[पीसी 4 बनना फर्स्ट रेस्पॉन्डर]; } और अगर (टेक्स्टफील्ड == पीसी 4) {[टेक्स्टफिल्ड इस्तीफा फर्स्ट रेस्पॉन्डर]; } हां लौटें; }
मुझे लगता है मैं यहाँ पाया कुछ कोड को संशोधित करके एक समाधान पर पहुंचे:
सबसे पहले textfields के प्रतिनिधि होने के लिए आपके विचार नियंत्रक सेट
तो फिर कुछ इस तरह करते हैं:
- (bool) textfield:। (UITextField * ) TextField चाहिएChangeCharactersInRange: (NSRange) श्रेणी प्रतिस्थापन स्ट्रिंग: (NSString *) स्ट्रिंग {BOOL चाहिए प्रसंस्करण = नहीं; // डिफ़ॉल्ट को BOOL को अस्वीकार करना चाहिए MoveToNextField = NO; // वर्तमान फ़ील्ड पर डालने के लिए डिफ़ॉल्ट int स्ट्रिंग लैंग = [स्ट्रिंग लम्बाई]; यदि (insertStringLength == 0) {// बैकस्पेस चाहिएप्रक्रिया = हाँ; // प्रक्रिया अगर बैकस्पेस वर्ण दबाया गया था} और {यदि ([[textField टेक्स्ट] लंबाई] == 0) {चाहिएप्रक्रिया = हाँ; // प्रक्रिया अगर केवल 1 वर्ण अभी है}} // यहां हम अपने स्वयं के यूआईटीफ़ेस्टफिल्ड से निपटते हैं (जरूरप्रोसेस) {// यूआईटीफ़ेस्टफिल्ड एनएसएमयूटीएबल स्ट्रिंग * एमस्ट्रिंग = [[टेक्स्टफील्ड टेक्स्ट] mutableCopy]; यदि ([एमस्ट्रिंग लम्बाई] == 0) {// क्षेत्र में कुछ भी नहीं तो अभी तक प्रतिस्थापन स्ट्रिंग [mstring appendString: string] संलग्न करें; ShouldMoveToNextField = हाँ; } Else {// एक चार को जोड़ने या हटाने? यदि (insertStringLength & gt; 0) {[mstring insertString: स्ट्रिंग पर इंडेक्स: range.location]; } Else {// delete case - प्रतिस्थापन स्ट्रिंग की लंबाई को हटाने के लिए शून्य है [mstring deleteCharactersInRange: range]; }} // अब पाठ सेट करें [textField setText: mstring]; [मैस्ट्रिंग रिलीज़]; अगर (shouldMoveToNextField) {// // आगे इनपुट फ़ील्ड में जाएं यहां //}} // हमेशा वापस नहीं लौटाएगा क्योंकि हम मैन्युअल रूप से टेक्स्ट फ़ील्ड वापसी नहीं बदल रहे हैं; }
Comments
Post a Comment