ios - UIBarButtonItem UINavigationBar 中的自定义 View

标签 ios objective-c uinavigationbar uibarbuttonitem

我正在为 uinavigationbar 制作自定义栏按钮,我使用以下代码

 UIImageView *backImgView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"chk_back.png"]]; [backImgView setUserInteractionEnabled:YES];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:backImgView];
[backButton setTarget:self];
[backButton setAction:@selector(BackBtn)];
checkIn_NavBar.topItem.leftBarButtonItem = backButton;

问题是它没有调用它的 Action 。我做错了什么?

最佳答案

来自 Apple 文档:
使用指定的自定义 View 初始化新项。

- (id)initWithCustomView:(UIView *)customView

参数 自定义 View 表示项目的自定义 View 。 返回值 具有指定属性的新初始化项。

讨论: 由此方法创建的条形按钮项不会调用其目标的操作方法来响应用户交互。相反,栏按钮项需要指定的自定义 View 来处理任何用户交互并提供适当的响应。

解决方案:“使用背景图像创建按钮(为此按钮设置操作)并使用此按钮创建栏按钮”。例如:

UIButton *btn =  [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0,0,25,25)
[btn setBackgroundImage:[UIImage imageNamed:@"chk_back.png"] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(BackBtn) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *barBtn = [[UIBarButtonItem alloc] initWithCustomView:btn];

关于ios - UIBarButtonItem UINavigationBar 中的自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16057567/

相关文章:

ios - SSZiparchive 未从项目中删除

ios - Swift 转换,CGFloat 到 Integer

ios - 特殊符号在 UIAlertView 中不起作用

ios - 执行 segue 时将字符串传递给第二个 View Controller 的 UILabel

ios - 有没有办法检查 "increase contrast"是否在 iOS 的辅助功能设置中启用?

ios - 带有半透明导航栏的滚动条

ios - 当设备方向为faceDown或faceUp时,如何获取界面方向?

ios - 使用方面适合的 Assets 目录切片

objective-c - 声明并实现带有 block 的 iSO 方法,但没有其他参数

ios - 设置导航栏标题字体