ios - 键入时将字符附加到文本字段

标签 ios swift swift2 uitextfield

textField 应该执行以下操作:

User types "w" -> textField: "w?"  
User types "ho are you" -> textfield: "who are you?

现在对于每个输入“?”的字符添加在它之前。

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

    let text = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string)
    let newLength = text.characters.count

    if newLength <= 25 {
        cLabel.text = String(25 - newLength)
        if text.isEmpty { //Checking if the input field is not empty
            ahskButton.userInteractionEnabled = false //Disabling the button
            ahskButton.enabled = false

        } else {
            ahskButton.userInteractionEnabled = true //Enabling the button
            ahskButton.enabled = true
            textField.text! += "?" //NOT WORKING
        }

            return true;
        } else {
            return false;
        }
    }

最佳答案

线索就在您正在实现的委托(delegate)方法的名称中:shouldReplaceCharactersInRange

您正在重写它,就像它是 didReplaceCharactersInRange 一样。

字符的替换不会发生,直到您从此方法返回之后(如果有的话)(取决于返回值)。

如果您想在此方法中自行更改文本,则应从该方法返回 false

编辑: 如果返回 false,文本不会自动更改。

您当前在 textField 的文本后面附加了一个问号,但不添加用户尝试输入的字符。

您可能想让它更像:

textField.text! = 文本 + '?'

本质上,您希望在每次调用此方法时手动将 textField 的文本设置为正确的字符串。

关于ios - 键入时将字符附加到文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37207909/

相关文章:

swift - 将 [UInt8] 的部分内容转换为 UInt8

arrays - Array of arrays of typealias 表达式类型不明确,没有更多上下文

ios - 如何在 iOS 中为拍卖应用程序集成倒计时

javascript - Swift 在 webview 中评估 JavaScript

ios - 将 UIImage View 保存到 SWIFT 字典中

Swift:任何类型的序列作为函数参数

swift - 比较 Swift 类层次结构中的协议(protocol)

ios - Swift 4 - 如何从 socket 集合中的自定义 UIView 获取 UI 元素?

android - 如何从一个地方 flutter 中挑选图像或视频?

ios - 代码签名资源规则路径在 Jenkins 上失败,CODE_SIGN_RESOURCE_RULES_PATH