2010-12-08 22 views
0

我有一個按鈕,在我的應用程序,按下時進入到一個視圖 ,但我需要按住3秒的時候,它會去不同的看法,iphone按鈕都到了不同的看法

就像當你在Safari上ipad和你按住URL,它顯示了一個彈出與複製等,

,但我需要的是按3秒,當它進入到另一種觀點...

希望這是有道理的,我會更好地解釋,如果不明白,

非常感謝你! pd,如何讓它顯示彈出窗口樣式? 歡呼!

回答

4

嘗試在視圖控制器中設置NSTimer屬性。按下按鈕後,創建計時器並將其分配給您的財產。您可以檢測到在這一種:

[button addTarget:self action:@selector(startHoldTimer) forControlEvents:UIControlEventTouchDown]; 

以及與此分配:

-(void) startHoldTimer { 
    self.myTimer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(goToNewView:) userInfo:nil repeats:NO]; 
} 

然後設置一個動作上被取消的觸摸運行,或觸摸的內心:

[button addTarget:self action:@selector(touchUp) forControlEvents:UIControlEventTouchUpInside]; 
[button addTarget:self action:@selector(cancelTimer) forControlEvents:UIControlEventTouchCancel]; 

//if timer fires, this method gets called 
-(void) goToNewView { 
    [self cancelTimer]; 
    [self loadSecondView]; 
} 

// normal button press invalidates the timer, and loads the first view 
-(void) touchUp { 
    [self cancelTimer]; 
    [self loadFirstView]; 
} 

//protected, just in case self.myTimer wasn't assigned 
-(void) cancelTimer { 
    if (self.myTimer != nil) 
     if ([self.myTimer isValid]) { 
      [self.myTimer invalidate]; 
    } 
} 

這應該搞定此事!

0

一種可能的方法是實現其中一個觸摸事件(我不記得名字,但是當你按下按鈕時觸發的方法),並安排一個定時器在三秒鐘內觸發。如果用戶在此之前提起手指,取消計時器並執行正常的按鈕單擊。如果時間點火(即3秒過去),則忽略觸摸事件並加載新視圖。

1

使用一個UILongPressGestureRecognizer,添加到按鈕-addGestureRecognizer: - 它會處理觸摸計時和觸發一個事件,當它認識到按鈕已被按住一段時間。不過,您可能需要重新考慮您的交互模式 - 通常情況下,可以長時間按下的內容不是按鈕,它們是視圖中的實際數據片段,例如Safari中的圖像或鏈接。