【问题标题】:Detect which character was backspaced in Swift检测 Swift 中退格的字符
【发布时间】:2016-01-02 02:31:56
【问题描述】:

我想检测用户何时退格 @ 键。我使用的代码是:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
        let  char = string.cStringUsingEncoding(NSUTF8StringEncoding)!
        let isBackSpace = strcmp(char, "\\b")

        if (isBackSpace == -92) {
            print("Backspace was pressed")

        }
        return true
    }

..但它没有告诉我哪个键被退格了。有什么办法吗?

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    退格键不会出现在 replacementString 参数中。系统通过指定要删除的范围来实现退格(除非用户选择了文本范围,否则它将跨越单个组合字符序列),替换字符串为""(空字符串)。所以要检测退格或其他删除操作:

        func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
            if string == "" && range.length > 0 {
                // Backspace or other deletion
                let stringToDelete = (textField.text! as NSString).substringWithRange(range)
                if stringToDelete == "@" {
                    print("bye-bye @")
                }
            }
            return true
        }
    

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-12
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 2019-03-19
      相关资源
      最近更新 更多