ShareKit分享者只展示一次?

时间:2012-08-15 21:53:21

标签: ios modalviewcontroller sharekit null

这个问题有点具体,但无论如何我都会问。所以我从这里正确地遵循了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,它会发生 ALL 共享者。我已将问题缩小到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点奖励

感谢所有试图解答此问题的人! :)

3 个答案:

答案 0 :(得分:0)

这是一个在黑暗中拍摄但我已经把头发拉出股票套件问题,所以我知道任何有用的东西。

似乎在视图被解除后第一次currentView永远不会被设置为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;
    }
}

在iOS5中取消视图后,我只在强制self.currentView = nil;调用中添加了。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

几乎只是远离方法调整。