我已经在我的应用程序中使用了一个SFAuthoizationView,并且我试图从我的代码中调用authorize方法,以提示用户在当前未授权的情况下进行授权。
我的问题是这个方法似乎不起作用!
我的代码如下所示,其中authView是SFAuthorizationView,authorizeMe是在单击按钮时调用的方法(并且确实显示了日志消息,所以我知道它正在被调用)。
如果锁被锁定,则authorize消息只返回false,并且似乎不会提示用户输入密码。
有人知道这是怎么回事吗?
- (void) mainViewDidLoad {
[authView setDelegate:self];
[authView setString:"Test String"];
[authView setAutoupdate:YES];
}
- (IBAction)authorizeMe:(id)sender {
NSLog(@"Authorizing...");
[authView authorize:authView];
}
- (void)authorizationViewDidAuthorize:(SFAuthorizationView *)view {
self.enabled = YES;
}
- (void)authorizationViewDidDeauthorize:(SFAuthorizationView *)view {
self.enabled = NO;
}发布于 2009-12-01 07:52:43
我也有同样的问题,我注意到了一些事情。
为了使SFAuthorizationView authorize方法与用户交互,您必须在初始化SFAuthorizationView时设置这两个标志:
AuthorizationFlags flags = kAuthorizationFlagInteractionAllowed | kAuthorizationFlagExtendRights;
[m_authView setFlags:flags];然而,我不认为SFAuthorizationView是被设计成这样使用的。
设置这些标志后,调用m_authView updateStatus:m_authView;将提示用户输入管理员凭据,如果设置了m_authView,则自动更新:是;将随机提示用户输入密码,并且当用户单击cancel时,提示不会消失!
我相信SFAuthorizationView authorize方法故意抑制用户交互。
似乎您可以调用另一个方法来代替authorize:(无效)buttonPressed:(Id)sender。此方法没有文档记录,它将生成编译警告,但它在10.6上确实有效。
发布于 2009-06-12 20:18:21
我猜@"Test String"不是您在系统中注册的授权权限的名称。授权视图需要知道您所请求的权限。This document提供了关于如何做到这一点的概述。
https://stackoverflow.com/questions/988747
复制相似问题