2013-12-09 84 views
1

我有一個包含值「170.00」的UILabel。我現在想要創建一個按鈕,該按鈕在按下3秒時將值設置爲「0」。顯然,使用按鈕很容易改變標籤的值,但是如何添加必須按下至少3秒的條件?UIButton按下3秒

最終結果應該類似於計算器的「重置」按鈕,當按下3秒或更長時間時,將重置存儲的用戶值。

我甚至不知道從哪裏開始?的NSTimer?

謝謝!

回答

2

正確,請使用NSTimer。我不會寫代碼的你,但你應該做到以下幾點:

  1. 當按下按鈕,啓動計時器
  2. 當按鈕被釋放,結束/清零定時器。
  3. NSTimer使選擇器在間隔上運行。所以你可以在3秒後運行它,如果它達到那個方法,你可以改變UILabel文本。
+0

爲什麼不在3秒後啓動計時器? –

+0

我在記憶中工作,我想也許間隔是一個枚舉。但你是對的。 – jraede

2

只是你可以使用NSTimer爲例。當按下按鈕(爲IBAction使用適當的事件)時,啓動NSTimer,3秒鐘後進行一些操作。但是,當釋放按鈕 時,您將使計時器無效。所以如果按鈕被釋放之前,定時器停止。 否則,事件啓動並且定時器無效,所以當你釋放按鈕時,定時器已經停止。

2

可以像下面這樣做沒有定時器:

-(IBAction)buttonDown:(id)sender { 
    [self.label performSelector:@selector(setText:) withObject:@"0" afterDelay:3]; 
} 

-(IBAction)buttonUp:(id)sender { 
    [NSObject cancelPreviousPerformRequestsWithTarget:self.label]; 
} 

第一種方法是在觸地發射,並且所述第二觸摸的內心(兩者都連接到相同的按鈕)。如果在3秒鐘之前將手指從按鈕上擡起,則會觸發第二種方法並取消延遲的選擇器。

1

使用performSelector:withObject:afterDelay:當按鈕按下時開始。釋放按鈕時使用cancelPreviousPerformRequestsWithTarget:。這樣,你不需要關心NSTimer(雖然它可能會被框架使用)