相关疑难解决方法(0)

如何在设置leftBarButtonItem后在UINavigationController中启用后退/左侧滑动手势?

我从这里得到了相反的问题.默认情况下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

59
推荐指数
10
解决办法
8万
查看次数

如何子类化UIScrollView并将委托属性设为私有

这是我想要实现的目标:

我想子类化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)

delegates subclass objective-c uiscrollview ios

26
推荐指数
1
解决办法
2万
查看次数