0

在我的应用程序中,我希望自定义一个条形按钮,该按钮当前显示用户的位置,以便如果用户点击并按住它,它会显示一个包含其他信息的子视图。但是,似乎我只能发送一个动作。绝对是这种情况,还是有办法让我采取多个行动?我知道有一个子类可以启用用户方向位置(例如在地图应用程序中) - 我可以以某种方式实现类似的功能吗?

4

3 回答 3

6

创建您自己的UIButton并添加您想要的所有手势识别器或操作。然后创建UIBarButtonItemwith initWithCustomView:

UIButton *btn = // create button as needed
btn.showsTouchWhenHighlighted = YES; // keep the "glow" effect
[btn addTarget:self action:@selector(someSelector) forControlEvents:someEvent];
// repeat as needed for different events/selectors
// or add gesture recognizers

UIBarButtonItem *btnItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
于 2012-12-11T21:57:54.850 回答
0

UIBarButtonItems 只发送一个事件。您需要创建自己的自定义控件,向其中添加手势识别器以识别点击和长按,并使用您的自定义控件创建条形按钮项。

于 2012-12-11T21:55:34.670 回答
0

正如其他评论所说:不可能将“长按”手势识别器添加到本机栏按钮。有两种方法可以解决这个问题:

1) 在视图层次结构中找到代表按钮的 UIView 并向其添加手势识别器。更多信息在这里。这是非常直接的,只需几行代码即可完成,但如果将来视图的内部结构发生变化,可能会中断。

2) 通过将 UIButton 拖到导航栏按钮上(Interfacebuilder)或以编程方式设置 customView 属性,为导航栏按钮设置 customView。然后,您需要为该 UIButton 赋予 navBarButton 的外观并向其添加手势识别器。

于 2012-12-11T22:35:30.727 回答