iOS - UITextField 限制輸入

有時候使用輸入時, 想要限制輸入框只能輸入數字, 該如何實作呢?

我們可使用 NSCharacterSet 來達成此功能。

Step 1: 委託 UITextFieldDelegate

Step 2: 監聽輸入變化 shouldChangeCharactersInRange

Step 3: 設定限制字元

Source Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import UIKit

class ViewController: UIViewController {
@IBOutlet weak var numTextField: UITextField!

override func viewDidLoad() {
super.viewDidLoad()
numTextField.delegate = self;
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}

extension ViewController : UITextFieldDelegate {
func textField(textField: UITextField,
shouldChangeCharactersInRange range: NSRange,
replacementString string: String) -> Bool {
let inverseSet = NSCharacterSet(charactersInString:"0123456789.").invertedSet
let components = string.componentsSeparatedByCharactersInSet(inverseSet)
let filtered = components.joinWithSeparator("")
return string == filtered
}
}
作者

Nick Lin

發表於

2016-10-31

更新於

2023-01-18

許可協議


評論