UINavigationBar UIBarButtonItems のクリック領域が必要なサイズよりはるかに大きい 質問する

UINavigationBar UIBarButtonItems のクリック領域が必要なサイズよりはるかに大きい 質問する

誰かが助けてくれるといいのですが、ネットで答えを探したのですが、見つかりません。

UINavigationBar に追加された UIBarButtonItems のクリック領域は、必要以上に大きくなります。たとえば、ボタン付きのナビゲーション バーがあるプロジェクトを開き、ボタンの端とナビゲーション バーのタイトルの間の任意の場所をクリックします。明らかにボタンをクリックしていないのに、ボタンがクリックされます。

これも試してみてください。ボタンの下のナビゲーション バーの下をクリックします。ボタンはナビゲーション バーの約 5 ピクセル下でクリックされます。

私の問題はこれです

テーブルビューにボタン付きのカスタム ヘッダーを追加しましたが、ヘッダー内のボタンをクリックすると、テーブルビュー ヘッダー内のボタンではなく、5 ピクセル以上の UINavigationBar ボタンがトリガーされます。

テストを実行して、UINavigationBar からボタンを削除しましたが、興味深いのは、ナビゲーション バーの 5 ピクセル下については、ナビゲーション バーにボタンがなくても、ヘッダーのボタンがトリガーされないことです。

まるでナビゲーションバーの下に5ピクセル以上クリックスペースを確保しているかのようです。

私の質問はこれです-

ナビゲーション バーがボタン用に 5 ピクセル以上余分に占有しないようにする方法を教えていただけますか?

どうもありがとう ;)

ベストアンサー1

これが私が見つけた唯一の解決策です。カスタム ボタンのコンテナーを作成します。

//Create a container for the button
UIView *buttonContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 55, 44)];

//Create a smaller button
UIButton *closeButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 55, 25)];
[closeButton setTitle:@"Cancel" forState:UIControlStateNormal];
//center the title
closeButton.titleEdgeInsets = UIEdgeInsetsMake(23, 0, 0, 0);

[buttonContainer addSubview:closeButton];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:buttonContainer];

おすすめ記事