2

我試圖使用圖像作爲我的導航欄中的按鈕。按鈕顯示得很好,但它們不響應觸摸事件。以下是我如何設置按鈕:iOS:自定義圖像UIBarButtonItem不響應觸摸

UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow_up_24.png"]]; 

iv.userInteractionEnabled=YES; 
UIBarButtonItem * logoutButton = [[UIBarButtonItem alloc] initWithCustomView:iv ]; 

logoutButton.target=self; 
[email protected](logoutButtonPressed); 

我錯過了什麼?

+1

你可以嘗試使用anonther初始化:'*的UIBarButtonItem = logoutButton [的UIBarButtonItem頁頭] initWithImage:[UIImage的imageNamed :@「arrow_up_24.png」] style:UIBarButtonItemStylePlain target:self action:@selector(logoutButtonPressed)];'。 – fguchelaar

+0

問題是這會將圖像置於一個按鈕上。這不是我想要的樣子。我只是想讓圖像本身成爲按鈕(沒有邊框和什麼)。我發佈的代碼看起來是正確的,它只是不會響應觸摸。 –

回答

7

如果我沒有記錯,我曾經遇到過我的一個項目的問題。我相信這是UIBarButtonItem的問題。解決方法是...

UIButton *imageButton = [UIButton buttonWithStyle:UIButtonStyleCustom]; 
imageButton.frame = CGRectMake(0,0,24,24);//Standard size of a UIBarButtonItem i think. 
[imageButton setImage:[UIImage imageNamed:@"arrow_up_24.png"] forState:UIControlStateNormal]; 
[imageButton addTarget:self action:@selector(logoutButtonPressed) forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithCustomView:imageButton]; 

//將它添加到您的酒吧或任何這裏。

如果你想在白色光暈像常規按鈕,你就必須設置

imageButton.showsTouchWhenHighlighted = YES; 
+0

當我這樣做時,我的圖像根本不顯示。那裏什麼都沒有。 –

+0

@JamesHarpe噢,設置一個框架的按鈕 – DavidAndroidDev

+0

偉大的作品,謝謝! –

1

試試這個代替,我認爲問題是你設置圖像對象而不是按鈕對象。

UIButton *navBarButton = [[UIButton alloc] init]; 
[navBarButton setImage:[UIImage imageNamed:@"arrow_up_24.png"] forState:UIControlStateNormal]; 
[navBarButton addTarget:self action:@selector(logoutButtonPressed) forControlEvents:UIControlEventTouchUpInside]; 

// Use self.navigationItem.leftBarButtonItem if that's your preference 
UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithCustomView:rightItemImage]; 
self.navigationItem.rightBarButtonItem = rightItem; 
+0

正如我在其他答案中提到的那樣,當我這樣做時,圖像不再顯示出來。 –

+0

同上,我忘了設置框架:)。 – Adis