检测是不是在 UITextField 中输入了“空格”,并移动到下一个 UITextField

Posted

技术标签:

【中文标题】检测是不是在 UITextField 中输入了“空格”,并移动到下一个 UITextField【英文标题】:Detecting if a "space" has been typed in a UITextField, and moving to a next UITextField检测是否在 UITextField 中输入了“空格”,并移动到下一个 UITextField 【发布时间】:2016-03-07 19:19:34 【问题描述】:

我是 Swift 新手,我正在将一个小表单实现为解决方案。我有三个 UITextFields,我想这样做,如果我输入一个单词然后输入“空格键”,光标将移动到下一个 UITextField(即它会阻止你在该字段中输入多个单词) .

如果我要这样做,我会怎么做?

我想我应该覆盖

textField(_:shouldChangeCharactersInRange:replacementString:)

方法 - 这是正确的吗?

谢谢!

【问题讨论】:

看起来很合理。你为什么不试试呢?这就是我们大多数人解决这些问题的方式。 另外,一定要考虑如果范围在当前字符串的中间和/或replacementString被粘贴并包含一个空格,你想要做什么。 我认为这可能是错误的方法,因为我不想更改字符,只是在按空格键时阻止添加更多字符。 @菲利普米尔斯 【参考方案1】:

试试这个

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool 
    // Get your textFields text
    let str = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string)

    // Check if the last character is a space
    // If true then move to the next textfield
    if str.characters.last! == " "
        print("SPACE!")
        textField2.becomeFirstResponder()
    
    else
        print(str.characters.last!)
    

    return true

【讨论】:

嗨,Rashwan,感谢您的回答。我将在此基础上进行构建 - 它适用于第一个单词,但当我转到下一个单词时会引发异常 - (我正在使用三个 UITextFields)。 你确定所有的文本字段代表都设置了吗? @neX,我为您创建了一个示例项目,您可以使用它。你可以下载它here。【参考方案2】:

试试这个,

@IBOutlet weak var textField1: UITextField!
@IBOutlet weak var textField2: UITextField!
@IBOutlet weak var textField3: UITextField!

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool 
let str = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string)

if str.characters.last! == " “
        if textField == textField1
            textField2.becomeFirstResponder()
         else  if textField == textField2
            textField3.becomeFirstResponder()
         else  if textField == textField3
                   // do what you want
            

return true

【讨论】:

以上是关于检测是不是在 UITextField 中输入了“空格”,并移动到下一个 UITextField的主要内容,如果未能解决你的问题,请参考以下文章

检测用户何时在 UITableViewCell 中输入 UITextField

如何从 UITextField 中的外部键盘检测“命令+退格”

如何在不输入的情况下检测 UITextField 光标移动?

UITextField - 检测内置 iPhone 键盘上的输入?

如何检测 UISearchBar/UITextField 的输入暂停?

acessoryView 内的 UITextField -- 清除按钮未检测到触摸