gpt4 book ai didi

swift - 如何在 TextView 中键入 '@' 后检测字符串

转载 作者:行者123 更新时间:2023-11-28 06:01:53 24 4
gpt4 key购买 nike

我已经研究了很长时间了。我读过来自 Get currently typed word in UITextView 的文章和 Get currently typed word in a UITextView我认为我非常接近。我的问题是,在我能够成功检测到“@”符号后,由于某种原因,应该返回的单词没有返回。例如:

    func textViewDidChange(_ textView: UITextView) {
commentString = commentTextView.text
commentTextView.setTextTyping(text: commentTextView.text, withHashtagColor: .blue, andMentionColor: .red, andCallBack: callBack, normalFont: UIFont(name: "HelveticaNeue", size: 14)!, hashTagFont: UIFont(name: "HelveticaNeue-Medium", size: 14)!, mentionFont: UIFont(name: "HelveticaNeue-Medium", size: 14)!)
if let word = textView.currentWord {
if word.hasPrefix("@") {
print(word)
print(users)
print("Observing")
}
}
}

我能够检测到“@”,但是,在对 .hasPrefix 进行 bool 测试之后,应该跟在后面的单词没有被打印到控制台。如果我在 bool 测试之前打印“单词”,那么正确的单词就会打印到控制台。这是我用来检测“@”符号的扩展。

extension UITextView {

var currentWord : String? {
let beginning = beginningOfDocument

if let start = position(from: beginning, offset: selectedRange.location),
let end = position(from: start, offset: selectedRange.length) {

let textRange = tokenizer.rangeEnclosingPosition(end, with: .word, inDirection: 1)

if let textRange = textRange {
return text(in: textRange)
}
}
return nil
}
}

提前感谢任何帮助,谢谢!

最佳答案

所以您目前还没有完全了解 currentWord 中的内容.看起来你只得到了 @特点。 currentWord是一个变量,看起来您没有正确地遍历 textField 中的所有字符。这就是我的处理方式:

if let splitText = textField.text?.split(separator: " ") {
for word in splitText {
if word.hasPrefix("@") {
print(word) // call whatever function you need here
} else {
print("NOPE")
}
}
} else {
print("No Text!!")
}

这只会在找到 @ 时触发和 word包含 @@ 之后的每个字符直到 " " (空格)

关于swift - 如何在 TextView 中键入 '@' 后检测字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49407692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com