2009-08-28 65 views
0

我正在研究Iphone應用程序和新的開發。如果我的問題非常基本,我很抱歉。我搜索網絡,但無法得到答案。IPhone - 如何立即觸發事件

我的問題是,當用戶觸摸iphone時,我想讓該事件立即執行,而不是等待上一個事件完成。 我在touchBegan方法內調用while循環(存在於不同的類中)。當我收到另一個觸摸事件時,我想停止該循環。但touchBegan事件不會被調用(而是排隊),因爲我仍然存在觸摸開始。

任何人都可以請幫助我如何立即觸發觸摸事件,而不是等待上一個事件完成。

預先感謝您。

回答

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]; 
    } 
    

這樣的新touchEnded事件可以在這些其他事件之間進行處理。將延遲設置爲0.0會使應用程序響應更快。