我有一個按鈕,在我的應用程序,按下時進入到一個視圖 ,但我需要按住3秒的時候,它會去不同的看法,iphone按鈕都到了不同的看法
就像當你在Safari上ipad和你按住URL,它顯示了一個彈出與複製等,
,但我需要的是按3秒,當它進入到另一種觀點...
希望這是有道理的,我會更好地解釋,如果不明白,
非常感謝你! pd,如何讓它顯示彈出窗口樣式? 歡呼!
我有一個按鈕,在我的應用程序,按下時進入到一個視圖 ,但我需要按住3秒的時候,它會去不同的看法,iphone按鈕都到了不同的看法
就像當你在Safari上ipad和你按住URL,它顯示了一個彈出與複製等,
,但我需要的是按3秒,當它進入到另一種觀點...
希望這是有道理的,我會更好地解釋,如果不明白,
非常感謝你! pd,如何讓它顯示彈出窗口樣式? 歡呼!
嘗試在視圖控制器中設置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];
}
}
這應該搞定此事!
一種可能的方法是實現其中一個觸摸事件(我不記得名字,但是當你按下按鈕時觸發的方法),並安排一個定時器在三秒鐘內觸發。如果用戶在此之前提起手指,取消計時器並執行正常的按鈕單擊。如果時間點火(即3秒過去),則忽略觸摸事件並加載新視圖。
使用一個UILongPressGestureRecognizer
,添加到按鈕-addGestureRecognizer:
- 它會處理觸摸計時和觸發一個事件,當它認識到按鈕已被按住一段時間。不過,您可能需要重新考慮您的交互模式 - 通常情況下,可以長時間按下的內容不是按鈕,它們是視圖中的實際數據片段,例如Safari中的圖像或鏈接。