1

这个问题有点具体,但我还是要问。因此,我已正确遵循此处安装 ShareKit 2.0 的所有说明:https ://github.com/ShareKit/ShareKit/wiki/Installing-sharekit

一切都编译得很好等等。我添加的唯一文件是包含我的共享者信息的 DefaultSHKConfigurator.m 文件。

所以例如我这样称呼SHKMail

SHKItem *item = [SHKItem image:image title:@"Hey"];
        [item setText:myText];
        [item setURL:appURL];
        if ([SHKMail canShare]) {
            [SHKMail shareItem:item];
        }

第一次加载正常没有问题,并且关闭正常。我第二次执行此代码时,设备上没有任何反应。此问题不限于 SHKMail,它会发生在所有共享者身上。我已将问题缩小到SHK.m班级。

在该showViewController方法中,此代码被第二次调用:

// If a view is already being shown, hide it, and then try again
    if (currentView != nil)
    {
        self.pendingView = vc;
        [[currentView parentViewController] dismissModalViewControllerAnimated:YES];
        return;
    }

第二次执行我发布的第一个代码片段时,不应调用该代码。无论如何,这可能是什么原因造成的?我还能尝试调试什么?有任何想法吗?

我认为任何帮助我完全解决此问题的人都将获得50 点赏金

感谢任何试图回答这个问题的人!:)

4

3 回答 3

0

这是在黑暗中拍摄的,但我之前曾因共享工具包问题而把头发拉出来,所以我知道任何事情都是有帮助的。

似乎在第一次关闭视图后,currentViewnever 被设置为 nil。

我看到他们已经更新了一些适用于 iOS 5 的方法。尝试在SHK.m

- (void)hideCurrentViewControllerAnimated:(BOOL)animated
{
    if (isDismissingView)
        return;

    if (currentView != nil)
    {
        // Dismiss the modal view
        if ([currentView parentViewController] != nil)
        {
            self.isDismissingView = YES;
            [[currentView parentViewController] dismissModalViewControllerAnimated:animated];
        }
        // for iOS5
        else if([currentView respondsToSelector:@selector(presentingViewController)] &&
                [currentView presentingViewController])
        {
            self.isDismissingView = YES;            
            [[currentView presentingViewController] dismissViewControllerAnimated:animated completion:^{                                                                           
                [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                    [[NSNotificationCenter defaultCenter] postNotificationName:SHKHideCurrentViewFinishedNotification object:nil];

                     //THIS IS NEW
                     self.currentView = nil;
                }];
            }];
        }

        else
            self.currentView = nil;
    }
}

self.currentView = nil;我只是在 iOS5 中关闭视图后才添加强制调用。

于 2012-08-15T22:39:02.187 回答
0

我也在使用 ShareKit 2.0 进行 Facebook 分享(即 [SHKFacebook shareItem:item]),并没有遇到您目前面临的问题。

我已经在 iPhone Simulator 4.3 和 5.1 中测试了您的代码(即 [SHKMail shareItem:item]),没有任何问题。

可能是您的环境设置不正确,或者您的代码不是最新的。

于 2012-08-16T00:06:08.687 回答
0

通过在 StackOverflow 上查看这个问题,我已经成功解决了这个问题:我最终通过这个答案解决了这个问题:ShareKit method swizzling in Lion / Xcode 4.3.1?

几乎只是远离方法混搭。

于 2012-08-21T01:18:58.350 回答