Dav*_*lla 11 keyboard ios swift
我正在创建一个登录系统,我不希望在用户名字段中允许使用空格.我想阻止添加空格,而不是检查和验证字段.
因此,每次用户按空格键时,都不会发生任何事情.我怎样才能做到这一点?我见过Instagram这样做.
到目前为止这是我的代码:
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var signUp: UIBarButtonItem!
@IBOutlet weak var navBar: UINavigationBar!
@IBOutlet weak var UsernameText: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.clipsToBounds = true
UsernameText.attributedPlaceholder = NSAttributedString(string:"TypeYourUsername",
attributes:[NSForegroundColorAttributeName: UIColor.whiteColor()])
func textField(UsernameText: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if (string == " ") {
return false
}
return true
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewWillAppear(animated: Bool) {
UsernameText.becomeFirstResponder()
}
override func prefersStatusBarHidden() -> Bool {
return true
}
}
Run Code Online (Sandbox Code Playgroud)
Kam*_*pai 19
是的,你可以做到.覆盖UITextField委托方法shouldChangeCharactersInRange.并在该方法中检查空格字符.如果发现比返回false.
注意:不要忘记为textfield设置委托.
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if (string == " ") {
return false
}
return true
}
Run Code Online (Sandbox Code Playgroud)
编辑:更多代码
class ViewController : UIViewController, UITextFieldDelegate {
@IBOutlet weak var textField : UITextField!
override func viewDidLoad() {
super.viewDidLoad()
textField.delegate = self
}
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if (string == " ") {
return false
}
return true
}
}
Run Code Online (Sandbox Code Playgroud)
这里的textField对象是IBOutlet.这意味着文本字段控件位于故事板中并与此变量连接.
在Swift 2.0中
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let whitespaceSet = NSCharacterSet.whitespaceCharacterSet()
let range = string.rangeOfCharacterFromSet(whitespaceSet)
if let _ = range {
return false
}
else {
return true
}
}
Run Code Online (Sandbox Code Playgroud)
Swift 4.1/4.2 Xcode 10.1
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if string == " " {
return false
}
return true
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7991 次 |
| 最近记录: |