代码之家  ›  专栏  ›  技术社区  ›  user8105388

textfield扩展未更新屏幕上的文本(swfit4)

  •  0
  • user8105388  · 技术社区  · 7 年前

    下面的扩展代码将更新文本,但不会更新最后一个字母。因此,如果在文本字段中键入单词she,屏幕上的文本仅显示sh。

        extension ViewController: UITextFieldDelegate{
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        DispatchQueue.main.async {
            self.textNode.textGeometry.string = textField.text!
        }
        return true
    }
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   BlackMirrorz    7 年前

    我认为,您需要像这样进行代理回调:

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    
        if let textEntered = textField.text,
            let textRange = Range(range, in: textEntered) {
    
        let updatedText = textEntered.replacingCharacters(in: textRange, with: string)
            print("User Has Entered \(updatedText)")
    
            DispatchQueue.main.async {
                self.textNode.textGeometry.string = updatedText
            }
        }
    
        return true
    }
    

    希望对你有帮助。。。