2

ナビゲーションバーのボタンとして画像を使用しようとしています。ボタンは問題なく表示されますが、タッチイベントには応答しません。ボタンの設定方法は次のとおりです。

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

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

logoutButton.target=self;
logoutButton.action=@selector(logoutButtonPressed);

私は何が欠けていますか?

4

2 に答える 2

7

私の記憶が正しければ、過去のプロジェクトの 1 つでこの問題が発生しました。の問題だと思います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;
于 2012-11-15T15:13:52.630 に答える
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;
于 2012-11-15T15:09:05.160 に答える