दिलचस्प पोस्ट
एकाधिक आइटम के लिए Str_replace चित्र से लैंडस्केप तक घूमते वक्त आईपैड लेआउट स्केल होता है सी में फाइल डिस्क्रिप्टर से फ़ाइल नाम प्राप्त करना एक स्टैंडअलोन निष्पादन योग्य * बाइनरी * के लिए एक लिनक्स शैल स्क्रिप्ट को कैसे संकलित करें (जैसे नहीं, उदाहरण के लिए केवल सीएमओडी 755)? बाइंडिंग ऑब्जेक्ट कोड-पीछे में परिभाषित मैक कंटेनरों के लिए डॉकर में लापता कैरिज रिटर्न बाहरी ".js" फ़ाइलों का उपयोग कैसे करें मोंगोज़: अद्वितीय होने के लिए फ़ील्ड के संयोजन को कैसे परिभाषित करना है? खोज में कई कीवर्ड हाइलाइट करें ViewPager पेजर एडाप्टर दृश्य को अपडेट नहीं कर रहा है PKCS7_sign परिणाम कैसे प्राप्त करें • चार * या std :: स्ट्रिंग में केस-असंवेदनशील सूची खोज एक्सप्रेस res.sendfile निषिद्ध त्रुटि फेंक क्वेरी द्वारा MySQL डंप एंड्रॉइड में स्पिनर पर छोटे त्रिकोण का रंग बदलें

UITextField के लिए केवल अल्फ़ान्यूमेरिक वर्णों की अनुमति दें

IOS UITextField में केवल अल्फ़ान्यूमेरिक वर्ण इनपुट करने की इजाजत देने के बारे में मैं कैसे जाना होगा?

Solutions Collecting From Web of "UITextField के लिए केवल अल्फ़ान्यूमेरिक वर्णों की अनुमति दें"

UITextFieldDelegate विधि का प्रयोग करें -textField:shouldChangeCharactersInRange:replacementString: एक एनएससीएचआरएक्टरसैट जिसमें आप अनुमति देना चाहते हैं उन अक्षरों के व्युत्क्रम से युक्त। उदाहरण के लिए:

 // in -init, -initWithNibName:bundle:, or similar NSCharacterSet *blockedCharacters = [[[NSCharacterSet alphanumericCharacterSet] invertedSet] retain]; - (BOOL)textField:(UITextField *)field shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)characters { return ([characters rangeOfCharacterFromSet:blockedCharacters].location == NSNotFound); } // in -dealloc [blockedCharacters release]; 

ध्यान दें कि आपको यह घोषित करने की आवश्यकता होगी कि आपका क्लास प्रोटोकॉल (यानी @interface MyClass : SomeSuperclass <UITextFieldDelegate> ) को लागू करता है और अपने क्लास के उदाहरण के लिए टेक्स्ट फ़ील्ड के delegate सेट करें।

यह मेरा इसे करने का तरीका है:

 // Define some constants: #define ALPHA @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" #define NUMERIC @"1234567890" #define ALPHA_NUMERIC ALPHA NUMERIC // Make sure you are the text fields 'delegate', then this will get called before text gets changed. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { // This will be the character set of characters I do not want in my text field. Then if the replacement string contains any of the characters, return NO so that the text does not change. NSCharacterSet *unacceptedInput = nil; // I have 4 types of textFields in my view, each one needs to deny a specific set of characters: if (textField == emailField) { // Validating an email address doesnt work 100% yet, but I am working on it.... The rest work great! if ([[textField.text componentsSeparatedByString:@"@"] count] > 1) { unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".-"]] invertedSet]; } else { unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".!#$%&'*+-/=?^_`{|}~@"]] invertedSet]; } } else if (textField == phoneField) { unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:NUMERIC] invertedSet]; } else if (textField == fNameField || textField == lNameField) { unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:ALPHA] invertedSet]; } else { unacceptedInput = [[NSCharacterSet illegalCharacterSet] invertedSet]; } // If there are any characters that I do not want in the text field, return NO. return ([[string componentsSeparatedByCharactersInSet:unacceptedInput] count] <= 1); } 

UITextFieldDelegate संदर्भ को भी देखें

मुझे एक सरल और काम करने वाला उत्तर मिला और साझा करना चाहते हैं:

इवेंट संपादन के लिए अपनी यूआईटीक्स्टफिल्ड से जुड़ें IBAction को निम्नलिखित में बदल दिया गया है

 -(IBAction) editingChanged:(UITextField*)sender { if (sender == yourTextField) { // allow only alphanumeric chars NSString* newStr = [sender.text stringByTrimmingCharactersInSet:[[NSCharacterSet alphanumericCharacterSet] invertedSet]]; if ([newStr length] < [sender.text length]) { sender.text = newStr; } } } 

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

वर्तमान में स्वीकार किए जाते हैं उत्तर दृष्टिकोण:

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { // Get invalid characters let invalidChars = NSCharacterSet.alphanumerics.inverted // Attempt to find the range of invalid characters in the input string. This returns an optional. let range = string.rangeOfCharacter(from: invalidChars) if range != nil { // We have found an invalid character, don't allow the change return false } else { // No invalid character, allow the change return true } } 

एक और समान रूप से कार्यात्मक दृष्टिकोण:

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { // Get invalid characters let invalidChars = NSCharacterSet.alphanumerics.inverted // Make new string with invalid characters trimmed let newString = string.trimmingCharacters(in: invalidChars) if newString.characters.count < string.characters.count { // If there are less characters than we started with after trimming // this means there was an invalid character in the input. // Don't let the change go through return false } else { // Otherwise let the change go through return true } } 

स्विफ्ट के लिए: ईवेंट संपादन के लिए अपनी UITextField कनेक्ट करें निम्नलिखित IBAction के लिए बदल दिया गया:

 @IBAction func ActionChangeTextPassport(sender:UITextField){ if sender == txtPassportNum{ let newStr = sender.text?.stringByTrimmingCharactersInSet(NSCharacterSet.alphanumericCharacterSet().invertedSet) if newStr?.characters.count < sender.text?.characters.count{ sender.text = newStr } } } 

आपको shouldChangeCharactersInRange textField delegate विधियों का उपयोग करना होगा, और वर्णों की जांच करने के लिए textFieldDidBeginEditing , shouldChangeCharactersInRange और textFieldDidEndEditing तरीकों का उपयोग करना होगा।

कृपया दस्तावेज़ के लिए इस लिंक का संदर्भ लें।

स्विफ्ट में RegEx तरीका:

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { if string.isEmpty { return true } let alphaNumericRegEx = "[a-zA-Z0-9]" let predicate = NSPredicate(format:"SELF MATCHES %@", alphaNumericRegEx) return predicate.evaluate(with: string) }