2

次のようなカスタムナビゲーションボタンを作成しました。

  UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
  [button setImage:[UIImage imageNamed:@"some.png"] forState:UIControlStateNormal];
  ....
  [[current navigationItem] setLeftBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:button]];

ここで、currentはUIViewController*タイプです。すべて正常に動作し、ボタンが作成されますが、ボタンの外側、ナビゲーションバーの中央に非常に近いクリック可能な領域です。クリック可能な領域を制限することは可能ですか?

4

3 に答える 3

5

それがiOSの「機能」だと思います。左右のナビゲーション ボタンは、iOS で許可されている最小タッチ領域よりも小さいです。その結果、実際のヒット ゾーンは、物理的な NavigationButton よりもはるかに大きくなります。バーの真下も含めて、お気づきのようにボタンの左右に。タッチしている場所を「見る」ことなく、すばやくタッチできるようにするためです。これは、iPhone が初期のほとんどの Android フォンよりも自然に使用できる主な理由の 1 つです。

于 2012-05-10T18:10:28.243 に答える
0

UIBarButtonItem私は当初、と overrideをサブクラス化することを考えていました-touchInside:

UIBarButtonItemただし、は のサブクラスではないため、これは機能しませんUIView
したがって、達成しようとしているものは、プライベート API をオーバーライドしないと不可能です。

于 2012-05-10T18:14:32.920 に答える
0

私の推測では、ボタンが画像を中央に配置し、拡大縮小しないように設定されているため、ボタンのフレームが大きすぎます。

button.frame=CGRectMake(x,y,w,h)

フレームを、クリック可能な領域にしたいものに設定します。

于 2012-05-10T18:07:18.320 に答える