एक स्विफ्ट एक्सटेंशन जो कि विशेष रूप से आसान बनाने के लिए mxcl के उत्तर पर लागू होता है (यात्री द्वारा स्विफ्ट 2.3 के लिए अनुकूलित)
extension UITextField {
class func connectFields(fields:[UITextField]) -> Void {
guard let last = fields.last else {
return
}
for i in 0 ..< fields.count - 1 {
fields[i].returnKeyType = .Next
fields[i].addTarget(fields[i+1], action: "becomeFirstResponder", forControlEvents: .EditingDidEndOnExit)
}
last.returnKeyType = .Done
last.addTarget(last, action: #selector(UIResponder.resignFirstResponder), forControlEvents: .EditingDidEndOnExit)
}
}
इसका उपयोग करना आसान है:
UITextField.connectFields([field1, field2, field3])
एक्सटेंशन सभी फ़ील्ड के लिए "अगला" पर अंतिम बटन और अंतिम फ़ील्ड के लिए "पूर्ण" करने के लिए वापसी बटन सेट करेगा, और जब ये टैप किए जाएंगे तो फ़ोकस को हटा दें / फ़ोकस को हटा दें।
स्विफ्ट <2.3
extension UITextField {
class func connectFields(fields:[UITextField]) -> Void {
guard let last = fields.last else {
return
}
for var i = 0; i < fields.count - 1; i += 1 {
fields[i].returnKeyType = .Next
fields[i].addTarget(fields[i+1], action: "becomeFirstResponder", forControlEvents: .EditingDidEndOnExit)
}
last.returnKeyType = .Done
last.addTarget(last, action: "resignFirstResponder", forControlEvents: .EditingDidEndOnExit)
}
}
स्विफ्ट 3:
इस तरह का उपयोग करें -
UITextField.connectFields(fields: [field1, field2])
Extension:
extension UITextField {
class func connectFields(fields:[UITextField]) -> Void {
guard let last = fields.last else {
return
}
for i in 0 ..< fields.count - 1 {
fields[i].returnKeyType = .next
fields[i].addTarget(fields[i+1], action: #selector(UIResponder.becomeFirstResponder), for: .editingDidEndOnExit)
}
last.returnKeyType = .go
last.addTarget(last, action: #selector(UIResponder.resignFirstResponder), for: .editingDidEndOnExit)
}
}