खोज…


परिचय

कस्टम UITextField का उपयोग करके, हम पाठ क्षेत्र के व्यवहार में हेरफेर कर सकते हैं!

इनपुट पाठ को छानने के लिए कस्टम UITextField

यहाँ कस्टम UITextField का एक उदाहरण है जो केवल संख्यात्मक पाठ लेता है और अन्य सभी को छोड़ देता है।

नोट: iPhone के लिए नंबर प्रकार कीबोर्ड का उपयोग करके ऐसा करना आसान है, लेकिन iPad के लिए केवल नंबर वाला कोई कीबोर्ड नहीं है

class NumberTextField: UITextField {
    
required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    registerForTextFieldNotifications()
}

override init(frame: CGRect) {
    super.init(frame: frame)
}

override func awakeFromNib() {
    super.awakeFromNib()
    keyboardType = .numberPad//useful for iPhone only
}

private func registerForTextFieldNotifications() {
    NotificationCenter.default.addObserver(self, selector: #selector(NumberTextField.textDidChange), name: NSNotification.Name(rawValue: "UITextFieldTextDidChangeNotification"), object: self)
}

deinit {
    NotificationCenter.default.removeObserver(self)
}

func textDidChange() {
    text = filteredText()
}
private func filteredText() -> String {
    let inverseSet = CharacterSet(charactersIn:"0123456789").inverted
    let components = text!.components(separatedBy: inverseSet)
    return components.joined(separator: "")
}
}

इसलिए, जहाँ भी हम पाठ क्षेत्र चाहते हैं जो केवल इनपुट पाठ के रूप में संख्याएँ लेगा, तो हम इस कस्टम UITextField का उपयोग कर सकते हैं

कस्टम UITextField कॉपी, पेस्ट, आदि जैसे सभी कार्यों को अस्वीकार करने के लिए

यदि हम UITextField से कॉपी, पेस्ट, रिप्लेस, सेलेक्ट आदि सभी क्रियाओं को निष्क्रिय करना चाहते हैं तो हम कस्टम टेक्स्ट फ़ील्ड का उपयोग कर सकते हैं:

class CustomTextField: UITextField {

var enableLongPressActions = false

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)!
}

override init(frame: CGRect) {
    super.init(frame: frame)
}

override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
    return enableLongPressActions
}
}

enableLongPressActions प्रॉपर्टी का उपयोग करते हुए, यदि आवश्यक हो, तो हम किसी भी समय सभी कार्यों को सक्षम कर सकते हैं।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow