2013-01-17 51 views
4
PO(NSStringFromSelector(self.editSettings.action)); 
[self.editSettings setCustomView:imageView]; //works if this is commented out but with bad image 
PO(NSStringFromSelector(self.editSettings.action)); 

该代码后产生的UIBarButtonItem不再响应改变customView

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; 

然后我试图完全没有一个界面生成器(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需要是按钮而不是图像。好吧,我想知道。

+0

什么是editSettings?它是哪种类型的控制? – viral

+0

另外,'imageView'是UIView的后代吗?如果是这样,它**肯定有'userInteractionEnabled'属性。 – 2013-01-17 04:58:39

+0

imageView是一个UIImageView –

回答

3

从DOC:

initWithCustomView:

initWithCustomView:

使用指定的自定义视图的新项目。 - (ID)initWithCustomView:(UIView的*)customView参数

customView

A custom view representing the item. 

返回值

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

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