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 参数

自定义视图

A custom view representing the item.

返回值

具有指定属性的新初始化项目。讨论

此方法创建的条形按钮项不会调用 其目标的操作方法来响应用户交互。相反,条形按钮项期望指定的自定义视图来处理任何用户交互并提供适当的响应。可用性

于 2013-01-17T06:23:43.787 回答