How do I disable the "Space" Key on the keyboard in Swift?
ios, keyboard, swift
Solution
Yes you can do it. Override `UITextField` delegate method `shouldChangeCharactersInRange`. And in that method check for space character. If found than return false.
Note: Don't forget to set delegate for textfield.
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if (string == " ") {
return false
}
return true
}
Edit: More Code
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
}
}
Here `textField` object is an IBOutlet. It means that text field control is in storyboard and connected with this variable.
Problem
I'm creating a login system and I don't want spaces to be allowed in the username field. Instead of check and validating the field, I want to prevent spaces from being added. So, every time the user presses the spacebar, nothing should happen. How can I do that? I've seen Instagram do this. This is my code so far: ``` 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 } } ```