1

これは、ボタンナビゲーションバーを設定する方法です

 UIButton *addEditButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [addEditButton setImage:[UIImage imageNamed:@"edit.png"] forState:UIControlStateNormal];
    [addEditButton setFrame:CGRectMake(0, 0, 62, 31)]; used frame same as image

    [addEditButton addTarget:self action:@selector(EditTable) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *addEdit = [[UIBarButtonItem alloc] initWithCustomView:addEditButton];
    self.navigationItem.leftBarButtonItem =addEdit;

すべてが完璧に機能しますが、ボタンの外側に触れるとボタンが押されます。これを解決する方法はありますので、タッチした場合にのみ押されます

これがそのイメージここに画像の説明を入力

4

3 に答える 3

1

設定している画像がボタンの実際のサイズよりも小さいため、この問題が発生したと思います。ボタンのサイズを小さくするか、画像を大きくしてください。

これがお役に立てば幸いです。

于 2013-04-20T14:03:05.763 に答える
1

アップルは、ユーザーがスムーズにナビゲートできるようにこのことを設定しています。navigationBarButton の近くにボタンを配置するようなデザインは作成しないことをお勧めします。それを行う方法はいくつかありますが、この種のものを変更するのは良くありません。メッセージに返信してメッセージを削除するのと同じように、両方のボタンが隣り合っています

于 2013-04-23T13:37:35.200 に答える
0

そのようにしか機能しないようですが、それでも解決策を思いつきました。

1 つは、ナビゲーション バーを非表示にして、実際にツールバーを使用できることです。

その他は、その後に別のボタンを追加して、その有効なプロパティを FALSE に設定することができます。

これが適切かどうかはわかりませんが、少なくとも要件を満たしているようです。

コードは次のとおりです。

UIButton *addEditButton = [UIButton buttonWithType:UIButtonTypeCustom];
[addEditButton setFrame:CGRectMake(0, 0, 62, 31)];

[addEditButton setImage:[UIImage imageNamed:@"edit.png"] forState:UIControlStateNormal];

[addEditButton addTarget:self action:@selector(EditTable) forControlEvents:UIControlEventTouchUpInside];

UIButton *addEditButton1 = [UIButton buttonWithType:UIButtonTypeCustom];
[addEditButton1 setFrame:CGRectMake(63, 0, 30, 31)]; 

UIBarButtonItem *addEdit = [[UIBarButtonItem alloc] initWithCustomView:addEditButton];
UIBarButtonItem *addEdit1 = [[UIBarButtonItem alloc] initWithCustomView:addEditButton1];
addEdit1.enabled = FALSE;


NSMutableArray *buttonArray=[[NSMutableArray alloc]initWithCapacity:2];
[buttonArray addObject:addEdit];
[buttonArray addObject:addEdit1];

self.navigationItem.leftBarButtonItems =buttonArray;
于 2013-04-22T05:55:07.580 に答える