我正在使用 Swift 3 和 firebase 创建一个社交应用,用户可以在其中发帖,但问题是我不希望用户使用<强烈的诅咒话语。
当用户写这些词时,有没有办法替换这些词? 目前,用户使用文本视图来撰写他们想要发布的内容...
我怎样才能以最简单的方式完成?
我正在寻找答案,我发现了这个问题Swift: how to censor/filter text entered for swear words, etc? 有了这个答案代码:
import Foundation
func containsSwearWord(text: String, swearWords: [String]) -> Bool {
return swearWords
.reduce(false) { $0 || text.contains($1.lowercased()) }
}
// example usage
let listOfSwearWords = ["darn", "crap", "newb"]
/* list as lower case */
let userEnteredText1 = "This darn didelo thread is a no no."
let userEnteredText2 = "This fine didelo thread is a go."
print(containsSwearWord(text: userEnteredText1, swearWords: listOfSwearWords)) // true
print(containsSwearWord(text: userEnteredText2, swearWords: listOfSwearWords)) // false
但我真的不明白。我怎样才能在我的项目中实现它?我应该在哪里粘贴该代码?或者如何将该代码链接到我的文本视图?那个代码缺少什么应该工作?
答案 0 :(得分:0)
如果您在.editingChanged事件上使用UITextField。
inputTextField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
func textFieldDidChange(_ textField: UITextField) {
print(containsSwearWord(text: textField, swearWords: listOfSwearWords)) // Here you check every text change on input UITextField
}
<强>更新强>
您必须实施 UITextViewDelegate (Official Documentation)
输入结束前验证
在textViewShouldEndEditing(_ textView: UITextView)
验证用户输入并返回true / false以允许编辑结束。
输入结束后验证
在textViewDidEndEditing(_ textView: UITextView)
验证用户输入并在发现不允许的字词时显示任何警告。