我需要UINavigationBar
使用自定义UIBarButtonItem
。
我知道怎么做(使用自定义视图),但有一个问题:
使用默认后退按钮项目为我们提供了 iOS 7 手势,因此我们可以滑动返回等,使用自定义UIBarButtonItem
项目不会给我们这些手势。
我们如何创建自定义UIBarButtonItem
并维护 iOS 7 手势?
我不想从头开始构建完整的滑动手势,我不相信这是唯一的方法。
答案 0 :(得分:1)
手势基本上可以使用addGesture :( UIGestureRecognizer *)手势方法添加到任何UIView。
基本上,您需要实例化UISwipeGestureRecognizer对象,设置您想要的任何属性并实现其委托。然后,只需将其添加到您希望识别UISwipeGestureRecognizer的视图中。
因此,例如,由于UINavigationBar继承自UIView,您可以像这样发送addGesture:(UIGestureRecognizer *)手势消息:
UINavigationBar *myNavigationBar = [UINavigationBar new];
[self.view addView:myNavigationBar]; // 'self' refers to your view controller assuming this is where your code lives
UISwipeGestureRecognizer *swipeGesture = [UISwipeGestureRecognizer new]; // use the designated initializer method instead
[myNavigationBar addGesture:swipeGesture]; // again, this method is inherited from UIView, it's how you add gestures to views
[myNavigationBar setUserInteractionEnabled:YES]; // this is very important for enabling gestures
你去吧。
请记住,这只是工作的一半,因为您希望实现动画,使其看起来像您正在刷页面并在您滑动时移动。
答案 1 :(得分:0)
您可以使用一个小技巧来使本机手势正常工作。
创建UINavigationItem
的子类,然后覆盖leftBarButtonItems
方法:
- (NSArray*)leftBarButtonItems
{
return nil;
}
现在将此类用于具有自定义左UIBarButtonItem
的项目。手势有效!这是因为UINavigationController
认为没有剩下的项目并启用了手势。您仍然可以通过leftBarButtonItem
属性访问自定义项目。