【发布时间】:2015-11-16 22:14:10
【问题描述】:
我想允许用户在关闭应用程序之前在 UITextView 中输入一些注释。但是他/她可能没有输入任何内容,或者他/她可能输入了一些文本然后停止并且很长时间什么也不做。在任何一种情况下,我都想关闭 UITextView,保存一些东西,然后退出应用程序。如何检测到用户在一定秒数内没有输入任何内容?
我试图在等待一段时间后调度一个函数
static int idleSeconds = 8;
self.noteDoneTime = dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * idleSeconds);
dispatch_after(self.noteDoneTime, dispatch_get_main_queue(), ^{ [self endNoteRequest]; });
但每次用户更改文本时都会更新调度时间:
- (void)textViewDidChange:(UITextView *)textView {
if (textView == self.noteView) {
self.noteDoneTime = dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * idleSeconds);
}
}
但这不起作用,因为调度时间在初始设置后没有得到更新,所以即使用户继续编辑文本,方法“endNoteRequest”也会运行。我想我需要取消调度请求并发出一个新请求,但我该怎么做呢?
或者是否有其他实际有效的空闲超时方法?
【问题讨论】:
标签: ios grand-central-dispatch dispatch