首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UIBarButtonItem:目标操作不起作用?

UIBarButtonItem:目标操作不起作用?
EN

Stack Overflow用户
提问于 2010-05-09 10:45:05
回答 10查看 56.2K关注 0票数 81

我通过调用-initWithCustomViewUIBarButtonItem中设置了一个自定义视图。我的栏按钮项呈现得很好,但是当我点击它时,它不会调用我的目标对象上的操作。

下面是我的代码:

代码语言:javascript
运行
复制
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"someImage.png"]];
UIBarButtonItem *bbItem = [[UIBarButtonItem alloc] initWithCustomView:imageView];
self.navigationItem.leftBarButtonItem = bbItem;
[imageView release];
[bbItem setTarget:self];
[bbItem setAction:@selector(deselectAll)];
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-05-09 11:17:02

我不认为UIBarButtonItem的目标和操作适用于自定义视图。尝试使用UIButton而不是UIImageView,并将目标和操作应用于按钮。

Swift中的示例代码:

代码语言:javascript
运行
复制
let button  = UIButton(type: .Custom)
if let image = UIImage(named:"icon-menu.png") {
    button.setImage(image, forState: .Normal)
}
button.frame = CGRectMake(0.0, 0.0, 30.0, 30.0)
button.addTarget(self, action: #selector(MyClass.myMethod), forControlEvents: .TouchUpInside)
let barButton = UIBarButtonItem(customView: button)
navigationItem.leftBarButtonItem = barButton
票数 127
EN

Stack Overflow用户

发布于 2011-04-05 19:18:53

下面是我是如何工作的:

代码语言:javascript
运行
复制
UIButton* infoButton = [UIButton buttonWithType: UIButtonTypeInfoLight];
[infoButton addTarget:self action:@selector(displayAboutUs) forControlEvents:UIControlEventTouchDown];

UIBarButtonItem* itemAboutUs =[[UIBarButtonItem alloc]initWithCustomView:infoButton];
…
票数 24
EN

Stack Overflow用户

发布于 2012-06-21 23:37:25

我也有同样的问题,但是我反对为我的UIBarButtonItem使用UIButton而不是自定义视图(根据drawnonward的响应)。

或者,您可以在使用自定义视图初始化UIBarButtonItem之前将UIGestureRecognizer添加到自定义视图中;这似乎可以在我的项目中使用。

这就是我如何修改你的原始代码:

代码语言:javascript
运行
复制
UIImageView *SOCImageView = [[UIImageView alloc] initWithImage:
                             [UIImage imageNamed:@"cancel_wide.png"]];

UITapGestureRecognizer *tapGesture = 
       [[UITapGestureRecognizer alloc] initWithTarget:self 
                                               action:@selector(deselectAll:)];
[SOCImageView addGestureRecognizer:tapGesture];

SOItem.leftBarButtonItem = 
       [[[UIBarButtonItem alloc] initWithCustomView:SOCImageView] autorelease];
[tapGesture release];
[SOCImageView release];
票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2796438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档