IPhone - 如何立即触发事件

时间:2009-08-28 13:27:09

标签: iphone

我正在研究Iphone应用程序和新的开发人员。如果我的问题非常基本,我很抱歉。我搜索网,但无法得到答案。

我的问题是,当用户触摸iphone时,我希望立即执行该事件,而不是等待上一个事件完成。 我在touchBegan方法中调用while循环(存在于不同的类中)。当我得到另一个触摸事件时,我想停止那个循环。但是,触摸开始时我仍然没有调用touchBegan事件(而是排队)。

任何人都可以帮我解决如何立即触发触摸事件,而不是等待上一个事件结束。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

在iPhone上,一个事件必须在处理下一个事件之前运行完成。基本上,您希望代码不会长时间运行,以便您的应用程序能够对用户输入做出响应。

有很多方法可以解决这个问题。

  1. 将一些代码放入新线程中,然后从touchBegan方法启动该线程。
  2. 或者将循环转换为主线程上的多个事件。您可以通过以下方式执行此操作:

    - (void)initializeLoop
    {
      loopCounter = 0;
        [self performSelector:@selector(nextLoop) withObject:nil afterDelay:0.0];
    }
    
    - (void)nextLoop
    {
      loopCounter++;
      if (loopCounter<MaxCount)
        [self performSelector:@selector(nextLoop) withObject:nil afterDelay:0.0];
    }
    
  3. 这样,可以在这些其他事件之间处理新的touchEnded事件。将延迟设置为高于0.0将使应用程序更具响应性。