カスタム UIBarButtonItem (カスタム ビューとして UIButton を使用) を持つ UINavigationBar があります。問題は、カスタム ボタンのアクティブ領域が大きすぎることです。ボタンの外側で少なくとも 40 ピクセルをタップすると、ボタンのタップとして登録されます。これにより、偶発的なタップが発生します。これらのボタンのアクティブ領域を減らすにはどうすればよいですか?
4070 次
3 に答える
6
私もこの異変に気づきました。コンテナー UIView を使用すると、これが修正されることがわかりました。例えば:
UIButton *menuButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[menuButton addTarget:self action:@selector(revealMenu:) forControlEvents:UIControlEventTouchUpInside];
[menuButton setImage:[UIImage imageNamed:@"menuIcon"] forState:UIControlStateNormal];
UIView *menuButtonContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[menuButtonContainer addSubview:menuButton];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:menuButtonContainer];
于 2013-01-14T00:41:12.193 に答える
0
Interface Builder を介してボタンを追加していますか、それともプログラムで実行していますか? どちらの方法でも、次のコード行を使用して画像の境界を設定できます。
yourButton.bounds = CGRectMake( 0, 0, yourImage.size.width, yourImage.size.height );
完全な例が必要な場合は、アプリの 1 つで使用したものを次に示します。
UIImage *image = [UIImage imageNamed:@"audio-off.png"];
UIButton *myMuteButton = [UIButton buttonWithType:UIButtonTypeCustom];
myMuteButton.bounds = CGRectMake( 0, 0, image.size.width, image.size.height );
[myMuteButton setImage:image forState:UIControlStateNormal];
[myMuteButton addTarget:self action:@selector(mute) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *myMuteBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:myMuteButton];
navBar.leftBarButtonItem = myMuteBarButtonItem;
[myMuteBarButtonItem release];
于 2010-07-09T01:29:19.643 に答える
0
カスタムボタンのサイズを変更していないと思います...これを試してみてください...インターフェイスビルダーで、アクティブ領域を縮小したいボタンを選択し、「Command + 3」または「ツール->」を押しますサイズインスペクター」で「W」と「H」の値を減らします...これによりカスタムボタンが小さくなり、アクティブエリアも縮小されます...
〜ラビラジャ
于 2010-07-08T10:49:47.043 に答える