में एक टेक्स्ट फ़ील्ड पर ध्यान केंद्रित करने के लिए मेरे पास एक रजिस्टर स्क्रीन पर 4 टेक्स्टफील्ड हैं और मैंने इसे स्थापित किया है ताकि जब उपयोगकर्ता प्रत्येक टेक्स्ट फ़ील्ड पर अगला दबाए, तो अगला टेक्स्ट फ़ील्ड केंद्रित हो। नीचे कोड:स्विफ्ट
func textFieldShouldReturn(textField: UITextField) -> Bool {
if (textField == self.fNameField) {
textField.resignFirstResponder()
self.sNameField.becomeFirstResponder()
}
else if (textField == self.sNameField) {
self.emailField.becomeFirstResponder()
} else if (textField == self.emailField) {
self.passwordField.becomeFirstResponder()
}
else{
var thereWereErrors = checkForErrors()
if !thereWereErrors
{
//conditionally segue to next screen
}
}
return true
}
अंतिम टेक्स्ट फ़ील्ड की वापसी पर, मैं त्रुटियों के फ़ंक्शन (नीचे) के लिए चेक बुला रहा हूं। इसके भीतर यदि किसी भी क्षेत्र में कोई समस्या है तो मैं उस टेक्स्ट फ़ील्ड पर ध्यान केंद्रित करना चाहता हूं ताकि उपयोगकर्ता इसे आसानी से सही कर सके। क्या हो रहा है कि त्रुटि वाला टेक्स्ट फ़ील्ड फोकस कर रहा है (जैसा कि चेकफोरर फ़ंक्शन द्वारा निर्देशित किया गया है) लेकिन फिर फ़ोकस पासवर्ड टेक्स्ट फ़ील्ड पर वापस स्विच हो रहा है। मैंने उपरोक्त फ़ंक्शन के आखिरी में self.passwordField.resignFirstResponder()
में जोड़ने का भी प्रयास किया और यह पासवर्ड फ़ील्ड को फोकस खो देता है लेकिन फिर सामने आने वाले मुद्दे के साथ टेक्स्ट फ़ील्ड बिल्कुल ध्यान केंद्रित नहीं कर रहा है (यहां तक कि एक सेकंड के लिए भी नहीं) मैं कैसे ठीक कर सकता हूं इस?
func checkForErrors() -> Bool
{
var errors = false
let title = "Error"
var message = ""
if fNameField.text.isEmpty {
errors = true
message += "First name empty"
alertWithTitle(title, message: message, ViewController: self)
self.fNameField.becomeFirstResponder()
}
else if sNameField.text.isEmpty
{
errors = true
message += "Surname empty"
alertWithTitle(title, message: message, ViewController: self)
self.sNameField.becomeFirstResponder()
}
else if emailField.text.isEmpty
{
errors = true
message += "Email empty"
alertWithTitle(title, message: message, ViewController: self)
self.emailField.becomeFirstResponder()
}
else if !isValidEmail(emailField.text)
{
errors = true
message += "Invalid Email Address"
alertWithTitle(title, message: message, ViewController: self)
self.emailField.becomeFirstResponder()
}
else if passwordField.text.isEmpty
{
errors = true
message += "Password empty"
alertWithTitle(title, message: message, ViewController: self)
self.passwordField.becomeFirstResponder()
}
else if count(passwordField.text.utf16)<8
{
errors = true
message += "Password must be at least 8 characters"
alertWithTitle(title, message: message, ViewController: self)
self.passwordField.becomeFirstResponder()
}
return errors
}
नोट मैंने टेक्स्टफ़ील्ड प्रतिनिधि को शामिल किया है।
शीर्षक समारोह के साथ चेतावनी के रूप में अनुरोध:
func alertWithTitle(title: String!, #message: String, #ViewController: UIViewController) {
let alert = UIAlertController(title: title, message: message, preferredStyle: .Alert)
let action = UIAlertAction(title: "OK", style: .Cancel, handler: nil)
alert.addAction(action)
ViewController.presentViewController(alert, animated: true, completion: nil)
}
क्या आप textFieldDidBeginEditing में लिखा? उस कोड को पोस्ट करें – iAnurag
@iAnurag मेरे पास इस नियंत्रक – user2363025
पर टेक्स्टफिल्ल्डडिडबिनिंग संपादन नहीं है, आप अपने टेक्स्टफील्ड प्रतिनिधियों को कैसे प्रबंधित कर रहे हैं? – iAnurag