我有一種情況,用戶將觸摸一個UIButton,雖然他們可能已經觸摸它,但我需要能夠取消它或導致它失敗。取消觸摸它時的UIButton觸摸
我試圖使用button.enabled和userInteractionEnabled,但都沒有在飛行中工作。兩者都必須在觸摸開始之前設置。
我可以讓按鈕在被觸摸後和失敗時失敗嗎?
我有一種情況,用戶將觸摸一個UIButton,雖然他們可能已經觸摸它,但我需要能夠取消它或導致它失敗。取消觸摸它時的UIButton觸摸
我試圖使用button.enabled和userInteractionEnabled,但都沒有在飛行中工作。兩者都必須在觸摸開始之前設置。
我可以讓按鈕在被觸摸後和失敗時失敗嗎?
只要有BOOL變量,指出哪個按鈕動作是允許或不允許的,並檢查必要的地方。啓用,userinteractionenabled只是在一般
但是如何在按鈕被按下後取消觸摸?用布爾我可以保持接觸不做任何事情,但它仍然會顯示它正在被觸摸。 – daveMac 2013-02-08 16:18:37
不知道禁用你的問題倒是,但你可以基於像下面
[button addTarget:self
action:@selector(onTouchUpInside:)
forControlEvents:(UIControlEventTouchUpInside)];
[button addTarget:self
action:@selector(onTouchDown:)
forControlEvents:(UIControlEventTouchDown)];
[button addTarget:self
action:@selector(onTouchUpOutside:)
forControlEvents:(UIControlEventTouchUpOutside)];
請原諒我,如果這是沒有幫助的,或者你是什麼控制事件有歧行動尋找。
我很欣賞這種努力,但我不確定那就是我所追求的。 – daveMac 2013-02-08 16:24:54
你可以做的一件事來解決你的問題是自定義按鈕的按下的外觀,以滿足您的需求。用途: – setBackgroundImage:@"NormalStateImage.png" forState: UIControlStateNormal
– setBackgroundImage:@"HighlightedStateImage.png" forState: UIControlStateHighlighted
設置屬性adjustsImageWhenHighlighted
爲NO 和adjustsImageWhenDisabled
屬性爲NO
這是我目前的解決方法,但似乎我應該能夠以某種方式取消該觸摸。 – daveMac 2013-02-08 16:26:20
您可以取消觸摸。但你必須以不同的方式處理它們。你必須實現'UIResponder'響應觸摸事件。檢查此蘋果文檔http://developer.apple.com/library/ios/#documentation/uikit/reference/UIResponder_Class/Reference/Reference.html和本教程http://mobile.tutsplus.com/tutorials/iphone/ios -quick-tip-detecting-touch/ – Luke 2013-02-08 16:55:53
不會像hitTest一樣簡單嗎? – daveMac 2013-02-08 17:13:43
您需要註冊兩個動作爲您的按鈕,一個用於觸碰和一個觸摸起來。在接下來,您可以決定是否要取消並觸摸起來,寫下按鈕按下的實際邏輯。
[button addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown];
- (IBAction)touchDown:(id)sender
{
UIButton *b = (UIButton*)sender;
// Call this if you wish to cancel the event tracking
[b cancelTrackingWithEvent:nil];
}
這可以用於任何UIButton
。如果你想取消在用戶觸摸下就可以了時間按下按鈕,這些步驟應該工作:
設置的處理程序,其中取消需要檢查的事件。在這種情況下,當按鈕關閉時。
[yourButton addTarget:self action:@selector(buttonIsDownHandler :) forControlEvents:UIControlEventTouchDown];
在處理程序中,決定是否取消壓榨
- (IBAction爲)buttonIsDownHandler:(ID)發送方 { 如果(needToCancelThisPress) { [yourButton cancelTrackingWithEvent:無]; } }
按鈕的處理程序UIControlEventTouchCancel
將在取消後調用。
按鈕觸摸取消可以隨時完成。例如,如果您想追蹤用戶何時按下並保持太久,您可以在處理程序中啓動計時器,然後在計時器到期時取消觸摸。
你想取消後臺進程或連接到按鈕的直接插座? – Bartu 2013-02-08 16:34:32