iOS
UITextField प्रतिनिधि
खोज…
UITextField - कुछ वर्णों के लिए टेक्स्टफ़ील्ड प्रतिबंधित करें
यदि आप अपने टेक्स्टफ़ील्ड का उपयोगकर्ता इनपुट सत्यापन करना चाहते हैं, तो निम्न कोड स्निपेट का उपयोग करें:
// MARK: - UITextFieldDelegate
let allowedCharacters = CharacterSet(charactersIn:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvxyz").inverted
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let components = string.components(separatedBy: allowedCharacters)
let filtered = components.joined(separator: "")
if string == filtered {
return true
} else {
return false
}
}
उद्देश्य सी
#define ACCEPTABLE_CHARACTERS @"0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_CHARACTERS] invertedSet];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
return [string isEqualToString:filtered];
}
इसके अलावा आप सत्यापन करने के लिए सेब द्वारा दिए गए वर्ण सेट का भी उपयोग कर सकते हैं:
Https://developer.apple.com/reference/foundation/nscharacterset पर एक नज़र डालें
let allowedCharacters = CharacterSet.alphanumerics.inverted
let allowedCharacters = CharacterSet.capitalizedLetters.inverted
अगला टैग और प्रबंधन कीबोर्ड खोजें
पाठ फ़ील्ड विभिन्न प्रतिनिधि विधियों को कॉल करता है (केवल अगर प्रतिनिधि सेट किए जाते हैं) टेक्स्टफील्ड द्वारा बुलाए गए प्रतिनिधि पद्धति में से एक है - - (BOOL) textFieldShouldReturn: (UITextField ) textField
जब भी यूजर्स रिटर्न बटन पर टैप करते हैं तो यह तरीका कहा जाता है। लेकिन इस तरीके का इस्तेमाल करके हम किसी भी कस्टम व्यवहार को लागू कर सकते हैं।
उदाहरण के लिए,
नीचे दिए गए उदाहरण में, टैग के आधार पर अगला उत्तरदाता पता लगाया जाएगा और कीबोर्ड का प्रबंधन करेगा। यहाँ 20 स्थिरांक है, जैसा कि टेक्स्टफील्ड को दिया गया टैग 50,70,90 आदि हैं।
यहां एक नया टेक्स्टफील्ड ऑब्जेक्ट उत्तरदाता के रूप में खोजने पर, यह वर्तमान पाठ क्षेत्र को नए उत्तरदाता और खुले कीबोर्ड के अनुसार बना देगा।
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
NSInteger nextTag = textField.tag+20;
// Try to find next responder
UIResponder *nextResponder = [textField.superview viewWithTag:nextTag];
if (nextResponder)
{
// Found next responder, so set it.
[nextResponder becomeFirstResponder];
}
else
{
// Not found, so remove keyboard.
[textField resignFirstResponder];
}
return YES;
}
उपयोगकर्ता जब किसी टेक्स्टफील्ड के साथ इंटरेक्ट करना शुरू / समाप्त कर रहा है
स्विफ्ट 3.1 के लिए:
पहले उदाहरण में कोई यह देख सकता है कि आप लिखते समय टेक्स्ट फ़ील्ड के साथ बातचीत करने वाले उपयोगकर्ता को कैसे इंटरसेप्ट करेंगे। इसी तरह, UITextFieldDelegate में ऐसे तरीके हैं जो तब कहे जाते हैं जब किसी उपयोगकर्ता ने TextField के साथ अपनी बातचीत शुरू की और समाप्त कर दी।
इन विधियों का उपयोग करने में सक्षम होने के लिए, आपको UITextFieldDelegate प्रोटोकॉल के अनुरूप होने की आवश्यकता है, और प्रत्येक टेक्स्टफील्ड के बारे में जिसे आप सूचित करना चाहते हैं, प्रतिनिधि के रूप में मूल वर्ग को असाइन करें:
class SomeClass: UITextFieldDelegate {
@IBOutlet var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
textField.delegate = self
}
}
अब आप UITextFieldDelegate के सभी तरीकों को लागू कर सकेंगे।
अधिसूचित होने के लिए जब किसी उपयोगकर्ता ने एक टेक्स्टफील्ड का संपादन शुरू किया है, तो आप textFieldDidBeginEditing (_ :) विधि को लागू कर सकते हैं:
func textFieldDidBeginEditing(_ textField: UITextField) {
// now you can perform some action
// if you have multiple textfields in a class,
// you can compare them here to handle each one separately
if textField == emailTextField {
// e.g. validate email
}
else if textField == passwordTextField {
// e.g. validate password
}
}
इसी तरह, यदि किसी उपयोगकर्ता ने किसी टेक्स्टफ़ील्ड के साथ सहभागिता समाप्त कर ली है, तो आपको सूचित किया जा रहा है, आप टेक्स्टफ़ीडडीडइंड एडिटिंग (_ :) विधि का उपयोग कर सकते हैं:
func textFieldDidEndEditing(_ textField: UITextField) {
// now you can perform some action
// if you have multiple textfields in a class,
// you can compare them here to handle each one separately
if textField == emailTextField {
// e.g. validate email
}
else if textField == passwordTextField {
// e.g. validate password
}
}
यदि आप यह नियंत्रित करना चाहते हैं कि क्या TextField संपादन शुरू / समाप्त करना चाहिए, तो TextFieldShouldBeginEditing (_ :) और textFieldShouldEndEditing (_ :) विधियों का उपयोग आपके आवश्यक तर्क के आधार पर सही या गलत तरीके से किया जा सकता है।