स्विफ्ट कोड के लिए बहुत विशिष्ट कदम
आप तर्क प्रदान कर सकते हैं func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
जो UITextFieldDelegate
प्रोटोकॉल को लागू करके विधि में पाठ क्षेत्र के इनपुट को प्रतिबंधित करता है।
स्पष्टता के लिए, ये चरण मानते हैं कि आपके स्टोरीबोर्ड में एक टेक्स्ट फ़ील्ड ऑब्जेक्ट के साथ व्यू कंट्रोलर है जिसमें केवल अंकों को स्वीकार करना चाहिए।
व्यू कंट्रोलर के लिए एक कस्टम क्लास बनाएँ जो फैली हुई हो UIViewController
। सुनिश्चित करें कि आपके स्टोरीबोर्ड में दृश्य एक्सकोड की पहचान निरीक्षक में कस्टम वर्ग मान सेट करके कस्टम वर्ग को संदर्भित करता है।
import UIKit
class YourCustomController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
अपने दृश्य के टेक्स्ट फ़ील्ड से अपने कस्टम व्यू कंट्रोलर तक एक आउटलेट बनाएं।
class YourCustomController: UIViewController {
@IBOutlet weak var numberField: UITextField!
...
}
UITextFieldDelegate
अपने कस्टम व्यू कंट्रोलर में प्रोटोकॉल लागू करें ।
class YourCustomController: UIViewController, UITextFieldDelegate {
...
}
अपने कस्टम व्यू कंट्रोलर की viewDidLoad
विधि में, अपने कस्टम व्यू कंट्रोलर क्लास को अपने टेक्स्ट फील्ड के डेलीगेट को असाइन करें।
override func viewDidLoad() {
super.viewDidLoad()
numberField.delegate = self
}
जोड़े UITextFieldDelegate
की func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
विधि।
अपने कस्टम दृश्य नियंत्रक को numberField
पिछले चरण में प्रतिनिधि बनाने के परिणामस्वरूप , यह विधि प्रत्येक बार उपयोगकर्ता को पाठ क्षेत्र में एक चरित्र में प्रवेश करने के लिए कहा जाएगा। यदि आपकी विधि वापस आती है true
तो चरित्र पाठ क्षेत्र में बना रहेगा। यदि आपकी विधि वापस आती है false
तो चरित्र पाठ क्षेत्र में नहीं रहेगा।
string
पैरामीटर चरित्र उपयोगकर्ता द्वारा दर्ज की जा रही है। यदि string
चरित्र को एक में परिवर्तित किया जा सकता है, Int
तो यह 0 और 9 के बीच है; अन्यथा, यह कुछ गैर-संख्या वर्ण है।
class YourCustomController: UIViewController, UITextFieldDelegate {
...
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
return Int(string) != nil
}
}
(पूर्ण दृश्य नियंत्रक कोड के लिए नीचे देखें।)
उदाहरण केवल पाठ क्षेत्र के अंकों के साथ नियंत्रक देखें
import UIKit
class YourCustomController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var numberField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
numberField.delegate = self
}
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
return Int(string) != nil
}
}
उदाहरण दृश्य नियंत्रक एक दशमलव पाठ फ़ील्ड के साथ
यदि आप दशमलव संख्या का समर्थन करना चाहते हैं तो लाभ उठाएँ NSNumberFormatter
। अंतर के लिए कोड टिप्पणी देखें।
import UIKit
class YourCustomController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var numberField: UITextField!
private var formatter: NSNumberFormatter!
override func viewDidLoad() {
super.viewDidLoad()
numberField.delegate = self
formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
formatter.minimum = 0
}
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
return formatter.numberFromString("\(textField.text)\(string)") != nil
}
}