我从这里得到了相反的问题.默认情况下iOS7
,UINavigationController
堆栈的后滑动手势可以弹出呈现的内容ViewController
.现在我只是穿着所有self.navigationItem.leftBarButtonItem
风格的制服ViewControllers
.
这是代码:
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:LOADIMAGE(@"back_button") style:UIBarButtonItemStylePlain target:self action:@selector(popCurrentViewController)];
Run Code Online (Sandbox Code Playgroud)
之后,navigationController.interactivePopGestureRecognizer
被禁用.如何在不删除自定义的情况下启用弹出手势leftBarButtonItem
?
谢谢!
objective-c uinavigationbar uinavigationcontroller uinavigationitem ios
这是我想要实现的目标:
我想子类化UIScrollView以获得其他功能.这个子类应该能够对滚动作出反应,所以我必须将delegate属性设置为self来接收如下事件:
- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView { ... }
Run Code Online (Sandbox Code Playgroud)
另一方面,其他类仍然应该能够接收这些事件,就像它们使用基础UIScrollView类一样.
所以我有不同的想法如何解决这个问题,但所有这些并不完全令我满意:(
我的主要方法是......使用像这样的自己的委托属性:
@interface MySubclass : UIScrollView<UIScrollViewDelegate>
@property (nonatomic, assign) id<UIScrollViewDelegate> myOwnDelegate;
@end
@implementation MySubclass
@synthesize myOwnDelegate;
- (id) initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.delegate = self;
}
return self;
}
// Example event
- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
// Do something custom here and after that pass the event to myDelegate
...
[self.myOwnDelegate scrollViewDidEndDecelerating:(UIScrollView*)scrollView];
}
@end
Run Code Online (Sandbox Code Playgroud)
这样,当继承的scrollview结束滚动时,我的子类可以执行一些特殊操作,但仍然会通知事件的外部委托.这到目前为止工作.但是因为我想让这个子类可供其他开发人员使用,我想限制对基类委托属性的访问,因为它只应由子类使用.我认为其他开发人员最有可能直观地使用基类的委托属性,即使我在头文件中注释问题.如果有人改变委托属性,子类将不会做它应该做的事情,我现在无法阻止它.这就是我不知道如何解决它的问题.
我尝试尝试覆盖委托属性,使其只读取:
@interface MySubclass : UIScrollView<UIScrollViewDelegate>
...
@property (nonatomic, assign, …
Run Code Online (Sandbox Code Playgroud)