swift如何检查如果用户什么都不写在 4 秒内?

标签: UITextView ios Swift
发布时间: 2016/4/29 19:08:33
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有下一个函数 ︰

override func textViewDidChange(textView: UITextView) {
    super.textViewDidChange(textView)

    if textView.text.characters.count == 0 {
        print("stopped")
    } else {
        print("typing")
    }
}

所以,我想下一步 ︰

例如,用户输入某些东西,停在文本当中。我想要检查,如果用户写的东西,停在 4 秒钟运行功能,键入 stopped()

我这样做 ︰

override func textViewDidChange(textView: UITextView) {
    super.textViewDidChange(textView)

    if textView.text.characters.count == 0 {
        print("stopped")
    } else {
        print("typing")
        let timer = NSTimer.scheduledTimerWithTimeInterval(4.0, target: self, selector: "stopped", userInfo: nil, repeats: false)
    }
}

func stopped() {
    print("stopped typing")
}

但它运行我 NSTimer 每次。这是不是我想要什么。

我如何可以运行它只是一次?例如若要检查是否用户没有写任何东西在 4 秒内运行 stopped() 。只是一次。

解决方法 1:

你需要停止在前一个计时器与无效

var timer
override func textViewDidChange(textView: UITextView) {
    super.textViewDidChange(textView)

    if textView.text.characters.count == 0 {
        print("stopped")
    } else {
        timer.invalidate()
        print("typing")
        timer = NSTimer.scheduledTimerWithTimeInterval(4.0, target: self, selector: "stopped", userInfo: nil, repeats: false)
    }
}
官方微信
官方QQ群
31647020