objective-c – Objective C&iOS:运行计时器?的NSTimer 主题的NSDate的 etc

objective-c – Objective C&iOS:运行计时器?的NSTimer 主题的NSDate的 etc,第1张

概述我正在开发我的第一个iOS应用程序,并且遇到了第一个问题我无法找到一个好的答案. 问题:我有一个自定义的UIGestureRecognizer,并且所有连接都正确,我可以在识别后为@selector中的每次触摸运行代码.这对大多数事情来说都很好,但对其他人来说这是一个太多的输入. 我的目标:制作一个以指定间隔触发的计时器来运行逻辑,并且能够在取消触摸时取消此计时. 我在这里问的原因:解决方案有很多 我正在开发我的第一个iOS应用程序,并且遇到了第一个问题我无法找到一个好的答案.

问题:我有一个自定义的UIGestureRecognizer,并且所有连接都正确,我可以在识别后为@selector中的每次触摸运行代码.这对大多数事情来说都很好,但对其他人来说这是一个太多的输入.

我的目标:制作一个以指定间隔触发的计时器来运行逻辑,并且能够在取消触摸时取消此计时.

我在这里问的原因:解决方案有很多可能性,但没有一个能够成为最好的解决方案.到目前为止似乎

> performSelector(及其中的一些变体)
> NSThread
> NSTimer
> NSDate
> *** 作队列
>我想我也发现了其他一些……

从所有的研究来看,某种形式的线程似乎是可行的路线,但我不知道哪种方式最适合这种情况.

实现的示例:每0.10秒采用NSPoint,并且采用前一点和当前点之间的距离. [取每个点之间的距离产生非常混乱的结果].

相关代码:

- (voID)vIEwDIDLoad { CUIVerticalSwipeHold *vSwipe = [[CUIVerticalSwipeHold alloc] initWithTarget:self  action:@selector(touchHoldMove:)]; [self.vIEw addGestureRecognizer:vSwipe]; [vSwipe requireGestureRecognizerToFail:doubleTap];}...- (IBAction)touchHoldMove:(UIGestureRecognizer *)sender {     if (sender.state == UIGestureRecognizerStateEnded) {     }     if (sender.state == UIGestureRecognizerStateBegan) {     }     //other stuff to do goes here}
解决方法 使用NSTimer

设置如下:

theTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(yourMethodThatYouWantRunEachTimeTheTimerFires) userInfo:nil repeats:YES];

然后当你想取消它时,做这样的事情:

if ([theTimer isValID]){    [theTimer invalIDate];}

请注意,在上面的示例中,您需要声明NSTimer的“theTimer”实例,它可用于两种方法.在上面的例子中,“0.5”表示计时器每秒会发射两次.根据需要调整.

总结

以上是内存溢出为你收集整理的objective-c – Objective C&iOS:运行计时器?的NSTimer /主题/的NSDate的/ etc全部内容,希望文章能够帮你解决objective-c – Objective C&iOS:运行计时器?的NSTimer /主题/的NSDate的/ etc所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1256971.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存