swift - 当用户停止快速输入时如何创建函数
问题描述
我有一个 Ui 文本字段,当用户在大约 1 秒后停止输入时,我希望出现一个复选标记。我有以下代码:
@objc func getHintsFromTextField(textField: UITextField) {
print("Hints for textField: \(textField)")
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange,
replacementString string: String) -> Bool {
NSObject.cancelPreviousPerformRequests(
withTarget: self,
selector: #selector(ViewController.getHintsFromTextField),
object: textField)
self.perform(
#selector(ViewController.getHintsFromTextField),
with: textField,
afterDelay: 3.0)
return true
}
``` @IBAction func password3(_ sender: UITextField) {
if textField(passwordSignUp, shouldChangeCharactersIn: NSMakeRange(5, 10), replacementString: "") == true {
let imageView = UIImageView()
let image1 = #imageLiteral(resourceName: "icons8-ok-28")
imageView.image = image1
self.passwordSignUp?.rightView = imageView
self.passwordSignUp?.rightViewMode = UITextField.ViewMode.always
self.passwordSignUp?.rightViewMode = .always
errorLabel?.alpha = 0
}
}
(顺便说一下,IBAction func password3 正在开始输入)当我运行我的代码时,只要我点击文本字段,就会出现复选标记。我究竟做错了什么。
解决方案
我会使用类似的东西:
func textFieldDidChangeSelection(_ textField: UITextField) {
checkmarkImageView.isHidden = True
let timer = Timer.scheduledTimer(timeInterval: 3.0, target: self, selector: #selector(fireTimer), userInfo: nil, repeats: true)
}
和:
@objc func fireTimer() {
checkmarkImageView.isHidden = False
}
与其每次都创建 imageView,不如将其设置为最初隐藏的 IBOutlet。
推荐阅读
- java - Java中的一对多结果集
- powershell - 将 CSV 文件作为表格嵌入 Outlook 邮件中
- ios - 解析API获取的Json后,在Swift中无法赋值给变量
- android - Android 可绘制水平线
- sql - 全选然后将值转换为 SQL 列
- python - 在 python 中使用请求时无法获取本地颁发者证书
- node.js - 如何在 mongoose 中实现限制,就像在 mysql 中一样?
- android - 我的自定义列表视图中的另一个列表与 Firebase
- ios - 如何重定向到特定页面以进行推送通知?
- javascript - 如何跟踪单选按钮组数组中的选择?