2
PO(NSStringFromSelector(self.editSettings.action));
[self.editSettings setCustomView:imageView]; //works if this is commented out but with bad image
PO(NSStringFromSelector(self.editSettings.action));

そのコードが生成する

2013-01-17 11:47:41.184 BadgerNew[29570:c07] NSStringFromSelector(self.editSettings.action): Setting:
2013-01-17 11:47:41.185 BadgerNew[29570:c07] NSStringFromSelector(self.editSettings.action): Setting:

したがって、セレクターは同じです。

ただし、[self.editSettings setCustomView:imageView]; の後。ボタンが押せなくなります。押しても何の効果もありません。

おそらくcustomViewがユーザーの操作を「吸収」すると思いました。

ただし、設定できませんimageView.userInteractionEnabled。そのようなセレクターはありません。

私は何が欠けていますか?

それは問題ではないようです。コンソール印刷を追加しました。imageView userInteractionEnabled がデフォルトで false になっていることを示しています

UIImage * imageSetting= [UIImage imageNamed:@"setting-button"];
UIImageView * imageView = [[UIImageView alloc]initWithImage:imageSetting];
PO(NSStringFromSelector(self.editSettings.action));//Bar Button Item
self.editSettings.customView =imageView;
PO(NSStringFromSelector(self.editSettings.action));
PO(@(imageView.userInteractionEnabled));
PO(self.editSettings.customView);
PO(imageView);
imageView.userInteractionEnabled=false;

次に、Interface Builder (IB) ソリューションを完全に使用せずに試してみました。

UIImage * imageSetting= [UIImage imageNamed:@"setting-button"];
UIImageView * imageView = [[UIImageView alloc]initWithImage:imageSetting];
self.editSettings = [[UIBarButtonItem alloc]initWithCustomView:imageView];
self.editSettings.action = @selector(Setting:);

self.navigationItem.leftBarButtonItem = self.editSettings;

それでもうまくいきません。

customView は画像ではなくボタンである必要があると言う人がいます。さて、私は疑問に思います。

4

1 に答える 1

2

ドキュメントから:

initWithCustomView:

initWithCustomView:

指定されたカスタム ビューを使用して新しい項目を初期化します。- (id)initWithCustomView:(UIView *)customView パラメーター

customView

A custom view representing the item.

戻り値

指定されたプロパティで新しく初期化されたアイテム。討論

このメソッドによって作成されたバー ボタン アイテムは、 ユーザーの操作に応答して、そのターゲットのアクション メソッドを呼び出しません。代わりに、バー ボタン アイテムは、指定されたカスタム ビューがユーザー インタラクションを処理し、適切な応答を提供することを期待します。可用性

于 2013-01-17T06:23:43.787 に答える