2012-08-13 47 views
0

我向我的UIButton添加了UIPanGestureRecognizer。現在,當我按下按鈕後用手指拖動一小段距離時,該按鈕停止高亮顯示。通常情況下,UIButton將保持突出顯示,除非您在UIButtons框架外拖動很遠。但是,使用平移手勢識別器,現在即使拖動一點點,該按鈕也不會突出顯示。當我添加一個平移手勢識別器時,我的按鈕不會保持突出顯示?

我的代碼中沒有任何內容將按鈕突出顯示的屬性設置爲no。我甚至嘗試擦除我的平移手勢識別器動作選擇器的所有代碼(當我在按鈕上平移時,會調用該方法)。

我也嘗試在平移手勢識別器的動作選擇器的東西中將按鈕的高亮屬性設置爲NO。

這種工作只是突出顯示閃爍。當你平移突出顯示的消失時,會很快恢復,就像閃光燈一樣。所以,這也不起作用。有任何想法嗎?

回答

4

手勢,默認情況下,將取消觸摸,因爲它們鏈接到的意見。所以,當你的按鈕中的觸摸被取消時,它變得不明顯。爲了防止這種行爲,請將您的手勢的cancelsTouchesInView屬性設置爲NO

+0

o好漂亮! – bmende 2012-08-13 01:36:16

+1

也幫我:) – msk 2012-08-13 01:37:54

+0

優秀的.. – sha256 2014-06-26 10:49:16

1

這將工作

-(void) panDetected:(UIGestureRecognizer *) gesture 
{ 
    if(gesture.state == UIGestureRecognizerStateBegan) 
    { 
     yourButton.backgroundImageView.image = [UIImage imageNamed:@"your_button_highlited_image.png"]; 
    } 
    else if(gesture.state == UIGestureRecognizerStateChanged) 
    { 

    } 
    else if(gesture.state == UIGestureRecognizerStateEnded) 
    { 
     yourButton.backgroundImageView.image = [UIImage imageNamed:@"your_button_normal_image.png"]; 
    } 
} 
+0

UIGestureRecognizer沒有財產backgroundImageView – bmende 2012-08-13 01:29:00

+0

我還是豎起大拇指,但因爲你努力:=) – bmende 2012-08-13 01:32:52

+1

我複製並粘貼了我的代碼,它有相同的要求,工作正常。 「自我」在這裏是我添加了gesturerecognizer的viewcontroller。 backgroundImageView是它的一個屬性,它實際上是背景ImageView。 – msk 2012-08-13 01:36:22

0

我遇到過同樣的問題。 borrrden是對的;要修復它,請將viewController設置爲gestureRecognizer的委託,並在觸摸位於IUButton上時取消觸摸。首先在.h文件中添加協議`UIGestureRecognizerDelegate。然後,創建手勢識別後,將視圖控制器作爲其代表:

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(aMethod)]; 
gestureRecognizer.delegate = self; 
[self.view addGestureRecognizer:gestureRecognizer]; 
[gestureRecognizer release]; 

最後覆蓋shouldReceiveTouch和取消不必要的接觸:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{ 

    if ([touch.view isKindOfClass:[UIButton class]]) { //Do not override UIButton touches 
     return NO; 
    } 
    return YES; 
} 
相關問題