當您按住D-Pad上的右鍵時,您知道Mario是如何繼續向右跑的嗎?以同樣的方式,我希望我的UIButton在持續時間內持續開啓它的行動。這是可能的UIButton?如果沒有,是否可以通過以某種方式重寫觸摸處理方法來處理UIImageView?其實,在試圖用UIButton完成這個工作之前,我有一些UIImageViews(安排用作D-Pad),它們通過觸摸處理方法進行檢查,但事情開始變得混亂,所以我認爲這可以通過UIButton更容易完成,因此切換。任何人都知道如何得到持續的,靜止的(未移動的)觸覺的認可,請分享。在按住狀態期間讓UIButton不斷燃燒的方法?
18
A
回答
32
不要使用按鈕,使用多點觸控的NSTimer:
做一個視圖本地的NSTimer對象的接口裏面,然後用它來啓動/取消計時器
-(void)movePlayer:(id)sender {
<Code to move player>
}
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
timer = [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(movePlayer:) userInfo:nil repeats:YES];
}
-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event {
if (timer != nil)
[timer invalidate];
timer = nil;
}
-(void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event {
if (timer != nil) {
[timer invalidate];
timer = nil;
}
}
這方式,您可以以預定義的時間間隔重複該事件,而不必依賴按鈕,並獲得您要查找的重複行爲。 注意touchesMoved觸發器 - 如果他們移動手指,則取消計時器,並且播放器停止移動。
40
你也可以做與上一個答案中顯示的類似的東西,但仍然使用UIButton。
只需在「Touch Down」上啓動計時器,並讓計時器在「Touch Up Inside」或「Touch Up Outside」中停止。
個人而言,我喜歡使用UIButtons,因爲它們提供了一些內置的視覺增強功能,您不必自行編寫代碼。
2
對我來說,以下工作:
- 創建一個按鈕。
- 在視圖控制器或子類中創建2種方法(停止觸摸並開始觸摸)。
- 加控制事件。 TouchUp Inside and Touch Drag Exit他們兩人都停止觸摸方法和Touch Down隨着開始觸摸方式。
- 當開始觸摸方法調用時,我們應該啓動一個間隔大約爲0.2的NSTimer(這取決於您調用的速度有多快),重複true並作爲一個選擇器調用一個您想要調用的方法當用戶點擊按鈕時要執行的內容)。
- 當停止觸摸方法調用時,我們應該使定時器 (
.invalidate()
)無效,並將定時器賦值爲nil。
就這樣!
0
而現在對於完全不同的東西:
ReactiveCocoa 6。
self.button.reactive
.controlEvents([.touchDown])
.observeValues { button in
SignalProducer.timer(interval: .milliseconds(500), on: QueueScheduler.main)
.take(until: button.reactive.controlEvents([.touchDragOutside, .touchDragExit, .touchUpInside, .touchUpOutside, .touchCancel]).map { _ in return })
.prefix(value: Date())
.startWithValues { date in
NSLog("\(date)")
}
}
相關問題
- 1. 動態燃燒Feedburner飼料?
- 2. UIButton按住
- 3. 算法繩子燃燒
- 4. 燃燒上AT89C2051
- 5. 使UIButton在頁腳旋轉期間保持連接狀態
- 6. 「燃燒」的使用#define
- 7. 在輸入onChange卡住期間反應改變父狀態
- 8. UIButton狀態(UIControlState)
- 9. '按住'UIButton行爲 - `觸摸取消'控制狀態阻止進一步的控制狀態
- 10. iPhone - 在按下時抓住UIButton事件
- 11. 以編程方式更改UIButton狀態
- 12. IOS - 讓時的UIButton按下
- 13. setContentEdgeInsets爲UIButton的不同狀態?
- 14. togglebutton記住狀態
- 15. jsMockito方法調用斷言不按預期方式工作
- 16. 保存的UIButton狀態
- 17. UIButton的狀態選擇
- 18. 讓UIButton在點擊後保持突出狀態
- 19. 如何讓test.m文件中的UIButton的狀態值
- 20. 記住uiswitch的狀態
- 21. 我可以讓libcurl記住請求之間的HTTP Digest驗證狀態嗎?
- 22. 卡拉夫無法在運行時加載加力燃燒類
- 23. ui.router狀態不按預期方式工作
- 24. 角度嵌套狀態不按預期方式工作
- 25. 懸停在iPhone上的UIButton狀態
- 26. UIButton不會改變選定狀態
- 27. UIButton檢測按住「手勢識別器」?
- 28. UIButton - 觸摸並按住,點擊
- 29. 「的方法不允許」在燒瓶
- 30. Android的ToggleButton setChecked(...)方法不改變按鈕的狀態
你有2 touchesBegan,我相信第2應該touchesMoved。 – freespace 2009-05-24 05:21:28
偉大的,但你能糾正重複touchesBegan觸發到你打算觸摸移動,所以沒有人會感到困惑。 – RexOnRoids 2009-05-24 05:38:02