2013-03-11 7 views
6

enter image description hereナビゲーションバーのボタンクリックすると、その下の領域をクリックするとイベントが発生します。

私は右のボタンの項目としてカスタム表示付きのナビゲーションバーを持っています。カスタムビューには2つのボタンがあります。しかし、右側のナビゲーションバーの下の領域をタッチすると、ボタンタッチイベントが発生します。私は、ボタンのフレームを確認し、背景色を変更して表示すると、すべてが完全に設定されています。 時計、カレンダー、設定、メモなどのデフォルトのiOSアプリを確認しました。これらのアプリはすべて同じ動作をしています。スクリーンショットで赤い長方形に触れると(デフォルトのiOSカレンダーアプリのこと。)のiOS

UIView* navigationButtonsView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 100.0f, 44.0f)]; 

UIButton *p = [UIButton buttonWithType:UIButtonTypeCustom]; 
[p setImage:[UIImage imageNamed:@"PBtn.png"] forState:UIControlStateNormal]; 
[p addTarget:self action:@selector(PButtonPushed:) forControlEvents:UIControlEventTouchUpInside]; 
[p setFrame:CGRectMake(43, 0, 57, 44)]; 
[navigationButtonsView addSubview:p]; 

UIButton *o = [UIButton buttonWithType:UIButtonTypeCustom]; 
[o addTarget:self action:@selector(oButtonPushed:) forControlEvents:UIControlEventTouchUpInside]; 
[o setFrame:CGRectMake(0, 0, 38, 44)]; 
[o setImage:[UIImage imageNamed:@"O.png"] forState:UIControlStateNormal]; 
[navigationButtonsView addSubview:o]; 

UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithCustomView:navigationButtonsView]; 
[musicVC.navigationItem setRightBarButtonItem: barItem animated:NO]; 

どのようにこのデフォルトを変更するには...ここで

は、コード..です同じボタンのタッチイベントがあまりにも私のアプリで起こっている発射しますナビゲーションバーボタンの動作?これらのボタンのすぐ下にいくつかのUIがあり、そのためにトップエリアが応答しないためです。事前に 感謝..

答えて

1

は、これは正常な動作です - 二つの理由:

  1. のiOSは、あなたの指がいかに大きいかを知らない - それはどこのタッチを入れて決定する必要があります。この場合、ナビゲーションバーはテーブルビューをオーバーライドします。

  2. これは、ヒューマンインタフェースガイドライン(申し訳ありませんが、Googleのリンクなし)に触れる可能性があります。最小接触可能領域は44pxでなければなりません。この動作は、これらの要件に準拠しようとする 'UIBarButtonItem'である可能性があります。

関連する問題