iOS 12 पासवर्ड टेक्स्ट को पहचानता है, isSecureTextEntry
संपत्ति से भी और न केवल textContentType
संपत्ति से, इसलिए इस गौण दृश्य को गायब करना वास्तव में संभव नहीं है जब तक कि आप दोनों टेक्स्टकॉन्टेंट टाइप को कुछ भी नहीं सेट करते हैं, और सिक्योरइंटी फीचर को हटा दें (और अपने ऐप में सुरक्षा दोष पैदा करें) जो तब iOS 12 को टेक्स्टफिल्ड को पासवर्ड टेक्स्टफिल्ड के रूप में पहचानने से रोकता है और इस कष्टप्रद सहायक दृश्य को दिखाता है।
मेरे मामले में गौण एक बग का कारण बना, जिसने टैप किए जाने पर मेरे ऐप को गैर-जिम्मेदार बना दिया (जिसे ऐप समीक्षा में मेरे ऐप को अस्वीकार कर दिया गया था)। इसलिए मुझे यह फीचर हटाना पड़ा। मैं इस सुरक्षा सुविधा को छोड़ना नहीं चाहता था, इसलिए मुझे अपने आप से चीजों को हल करना था।
यह विचार सिक्योरइंट्री फीचर को हटाने का है लेकिन इसे स्वयं से जोड़ दें। इसने काम किया:
इसे इस तरह किया जा सकता है:
स्विफ्ट 4 रास्ता:
पहले, जैसा कि यहां बताया गया है, textContentType
कुछ भी करने के लिए सेट :
if #available(iOS 10.0, *) {
passwordText.textContentType = UITextContentType("")
emailText.textContentType = UITextContentType("")
}
आगे, एक स्ट्रिंग वेरिएबल घोषित करें, जिसमें बाद में हमारी टेक्स्टफिल्ड वास्तविक सामग्री होगी:
var passwordValue = ""
प्रत्येक बार textField सामग्री में परिवर्तन करने के लिए कहा जाएगा, जो passwordTextField के लिए एक लक्ष्य जोड़ें:
passwordText.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
अब यह है कि जादू क्या करेगा, पाठ प्रतिस्थापन को संभालने वाले फ़ंक्शन की घोषणा करें:
@objc func textFieldDidChange(_ textField: UITextField) {
if textField.text!.count > 1 {
if passwordValue.count == 0 {
passwordValue = String(textField.text!)
} else {
passwordValue += textField.text!.substring(from: passwordValue.count)
}
} else {
if textField.text!.count > passwordValue.count {
passwordValue += String(textField.text!.last!)
} else if textField.text!.count < passwordValue.count {
passwordValue = String(passwordValue.dropLast())
}
}
self.passwordText.text = String(repeating: "•", count: self.passwordText.text!.count)
}
अंत में, सेट करें TextField की भविष्य कहनेवाला पाठ को हटाने के autocorrectionType
लिए .no
:
passwordText.autocorrectionType = .no
यही है, passwordValue
अपना लॉगिन करने के लिए उपयोग करें।
आशा है कि यह किसी की मदद करेगा।
अपडेट करें
यह पिछले मूल्यों को भी पकड़ता है, इसे पहले जोड़ना भूल गया।
textContentType
करने के लिए संपत्ति.textContentType
- यह आईओएस 11 को बताना चाहिए कि अपने खेतों नहीं हैं नाम / पासवर्ड क्षेत्रों (भले ही वे कर रहे हैं) और गौण दृश्य से किया जा रहा दिखाया गया है को रोकने; `Self.passwordField.textContentType = .textContentType` की तरह कुछ