Iphone 更换或扩展UIBarButtonItem选择器
我正在尝试制作一个自定义的Iphone 更换或扩展UIBarButtonItem选择器,iphone,ios,selector,uibarbuttonitem,uitoolbar,Iphone,Ios,Selector,Uibarbuttonitem,Uitoolbar,我正在尝试制作一个自定义的UIToolbar,它处理旋转和自定义排列。当它处于纵向模式时,一些barbuttonitems将不可见,因此我添加了一个“更多”按钮,从中弹出一个包含这些项目的小视图。我的问题是,当我当前的方向是纵向时,当我选择一个可见的按钮(不在弹出窗口中)时,如果弹出窗口打开,我想关闭它。我希望popupview中uibarbuttons的smae行为在点击后关闭弹出窗口 因此,我试图用我自己的选择器替换UIBarButtonItem的选择器,我在其中调用已经定义的操作,如下所示
UIToolbar
,它处理旋转和自定义排列。当它处于纵向模式时,一些barbuttonitems将不可见,因此我添加了一个“更多”按钮,从中弹出一个包含这些项目的小视图。我的问题是,当我当前的方向是纵向时,当我选择一个可见的按钮(不在弹出窗口中)时,如果弹出窗口打开,我想关闭它。我希望popupview中uibarbuttons的smae行为在点击后关闭弹出窗口
因此,我试图用我自己的选择器替换UIBarButtonItem的选择器,我在其中调用已经定义的操作,如下所示:
-(SEL)extendOriginal:(UIBarButtonItem *) uibb
{
if (popup) popup.hidden = YES;
[uibb.target performSelector:uibb.action];
// return ?? do what ??
}
但是,如何用自定义UIToolbar作为其目标来替换调用此自定义方法的原始选择器?或者,我如何通过此调用“扩展”原始选择器?抱歉,如果问题是蹩脚的:)
编辑:换句话说,我希望在点击UIBarButtonItem时执行两个操作,其中有两个单独的目标
谢谢 这个-(SEL)extendoroginal:(uibarbuttonite*)uibb
没有任何意义
我假设您正在某处设置目标和条形按钮项的操作。在那里,您可以使用一个参数id
或UIBarButtonItem*
作为选择器来设置任何方法
因此,请尝试将代码更改为
- (void)myMethod:(UIBarButtonItem *) uibb
{
if (popup) popup.hidden = YES;
// do cool stuff here
}
把目标定为
[[UIBarButtonItem alloc] initWithTitle: @"Blabla" style: UIBarButtonItemStylePlain target: self action: @selector(myMethod:)];
最后,我找到了一种方法,虽然不是最漂亮的,但很有效 在自定义工具栏类中,我在其布局方法中创建了一个
UITapGestureRecognizer
来处理点击。我已将cancelsTouchesInView
设置为false,并在
-(BOOL)手势识别器:(UIGestureRecognitor*)手势识别器应接受触摸:(UITouch*)触摸
方法我只为工具栏的子视图返回true
这样,每个UIBarButtonItem
的原始目标和操作保持不变,处理弹出窗口的补充代码是uigestureRecognitor
的操作。
另一个问题是区分工具栏上点击的项目(touch.view中点击的视图是一些未记录的视图,耶),最终我用一些BOOL ivar完成了这项工作
我希望这将帮助有同样问题的人 是的,我知道这没有意义:)我正在一个viewcontroller中添加uiBarButtonims,它有我的一个自定义工具栏。我的问题是我想透明地实现它,因此定义按钮操作的另一个viewcontroller应该没有此实现细节的代码(顺便说一句,目前它有,但这就是为什么我没有自定义工具栏来自动处理此问题。更准确地说,编辑了我的问题)。