好吧,我完全陷入困境,并且想知道是否有人能够指出我所犯的明显错误。
我在项目中使用Simperium(dev分支),如果用户取消认证窗口,我想在我的主AppDelegate中收到通知。
现在在SPAutheticationManager.m文件中有以下代码:
- (void)cancel {
DDLogVerbose(@"Simperium authentication cancelled");
if ([delegate respondsToSelector:@selector(authenticationDidCancel)])
[delegate authenticationDidCancel];
}
我设置了一个断点,当窗口被解除时,这肯定会被调用。
现在,我已将SPAuthenticationDelegate添加到我的AppDelegate中的实现中,然后将以下代码添加到AppDelegate.m
-(void)authenticationDidCancel {
NSLog(@"Authetication Cancelled");
}
但是,这并没有被调用,我无法理解为什么???
任何人都知道我在这里失踪了什么?
由于
加雷
答案 0 :(得分:1)
如果其他人遇到这个问题,如果没有在simperium.h中实现自定义委托方法并且让你的AppDelegate.h成为它的委托,就没有办法做到这一点。
在simperium.h中
- (void)didCancelAuth;
然后在simperium.m authenticationDidCancel方法中添加:
if ([delegate respondsToSelector:@selector(didCancelAuth)]) {
[delegate didCancelAuth];
}
然后将appDelegate设置为simperium的委托并添加:
- (void)didCancelAuth
{
//auth has been cancelled
}
您还需要通过执行类似
的操作来确保您的appdelegate是代表self.simperium.delegate = self;
干杯
加雷
答案 1 :(得分:0)
只是想让您知道我们刚刚添加了一个全新的“登录取消”委托方法(在此处提交:https://github.com/Simperium/simperium-ios/commit/5cae8a157786a48ffe1cc649f898341eb9cf51bf在开发分支中)。
感谢您帮助我们改善Simperium!