14

我正在尝试在 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 4s 上,点击触发该方法的按钮会导致……什么都没有。换句话说,我没有收到通知我必须设置 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])

实际正常工作(触发自动对话框,并带您进入设置),所以我实际上只是在我的代码中将其注释掉。

4

1 回答 1

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];

}
于 2013-01-09T14:19:22.120 回答