我正在尝试在iOS6中实现新的社交框架,除了2个奇怪的问题外,它还能正常工作。如果我启用了我感兴趣的服务(例如...... FaceBook),那么它可以正常工作。但是,如果从设置面板中删除帐户(让我们说FaceBook,为了保持一致),那么我会在模拟器和设备中获得不同的行为和令人沮丧的行为。
以下是我的视图控制器中的相关代码:
//Method for FaceBook
- (IBAction)doFacebook:(id)sender{
//check to see if facebook account exists
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
// Create the view controller defined in the .h file
fb=[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
// make the default string
NSString *FBString= [NSString
stringWithFormat:@"%@\r via #GibberishGenerator", gibText.text];
[fb setInitialText:FBString];
// show the controller
[self presentViewController:fb animated:YES completion:nil];
}
}
这是解雇上述方法时的奇怪行为:
在模拟器(版本6.0(358.4 )中,我收到通知我没有使用“设置”和“取消”按钮设置任何faceBook帐户的对话框。点击“设置”解散对话框,但不会将我带到设置面板。
在我的运行6.01的iPhone 4上按下触发该方法的按钮会导致...没有。换句话说,我没有通知对话通知我必须设置一个FaceBook帐户。
提前感谢您的帮助。
这是我的新实现,基于user1734802的有用评论。
//Method for FaceBook
- (IBAction)doFacebook:(id)sender{
// Create the view controller defined in the .h file
fb=[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
// make the default string
NSString *FBString= [NSString
stringWithFormat:@"%@\r via #GibberishGenerator", gibText.text];
[fb setInitialText:FBString];
// show the controller
[self presentViewController:fb animated:YES completion:nil];
}
在某些时候我期待
[SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
实际上正常工作(触发自动对话框,并带你进行设置),所以我实际上只是在我的代码中对它进行了评论。
答案 0 :(得分:28)
我有同样的问题,我通过删除If语句修复它:
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
然后显示视图,尽管设置中没有配置Facebook / Twitter帐户。 并且“无Facebook / Twitter帐户”alertView显示!我能够点击警报上的“设置”按钮,它指示我进入设置(在设置中配置Facebook / Twitter帐户)
这是我使用的代码,它对我来说非常适合:
- (IBAction)bTwitter:(id)sender {
mySLComposerSheet = [[SLComposeViewController alloc] init];
mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[mySLComposerSheet setInitialText:@""];
[mySLComposerSheet addImage:[UIImage imageNamed:@""]];
[self presentViewController:mySLComposerSheet animated:YES completion:nil];
}