我正在为 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/