Swift - 按下键盘时对“@”做出反应

Posted

技术标签:

【中文标题】Swift - 按下键盘时对“@”做出反应【英文标题】:Swift - React on "@" when pressing the keyboard 【发布时间】:2021-09-10 14:46:52 【问题描述】:

每当用户点击键盘上的“@”字符时,我都想调用一个函数。

目前,我正在使用以下方法

func textViewDidChange(_ textView: UITextView)  //Handle the text changes here
   if (textView.text.contains("@") 
      doSomething()
   

但是,上面的代码对我不起作用,因为我的文本视图将包含像 @ 这样的字符。这意味着,在我的文本视图中至少有一次 @ 之后,每次我在键盘上键入内容时,它都会调用 doSomething() 函数。还有其他方法可以检查用户的输入吗?

【问题讨论】:

改为检查textField(_:shouldChangeCharactersIn:replacementString:)。检查replacementString?并检查您是否已经doingSomething(),以防万一? 【参考方案1】:

而不是检查 textViewDidChange 移动到 shouldChangeCharactersIn

func textField(_ textView: UITextView, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool 

    if (textView.text.contains"@")  // Already have @ value
        doSomething()
    
    if (string == "@")  // user input char
        doSomething()
    
    return true

参考 => https://developer.apple.com/documentation/uikit/uitextviewdelegate/1618630-textview

【讨论】:

以上是关于Swift - 按下键盘时对“@”做出反应的主要内容,如果未能解决你的问题,请参考以下文章

更改 WPF 组合框以对鼠标按下做出反应

防止在本机反应中按下 TextInput 时显示系统键盘

当我在 Swift 上按下搜索栏时如何使键盘消失?

按下后退时 EditText 不会触发更改

Swift UI VStack 对齐。按下时使文本字段与键盘一起出现

Swift - 以编程方式创建的按钮和标签相互链接