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

初めて問題なく正常にロードされ、正常に閉じます。このコードを 2 回目に実行すると、デバイスで何も起こりません。この問題は SHKMail に限定されるものではなく、すべての共有者で発生します。SHK.m問題をクラスに絞り込みました。

メソッドではshowViewController、次のコードが 2 回目に呼び出されます。

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

そのコードは、投稿した最初のコード スニペットを 2 回目に実行するときに呼び出されるべきではありません。とにかく、何がこれを引き起こしているのでしょうか?他に何をデバッグしようとすることができますか? 何か案は?

この問題を完全に解決するのを手伝ってくれた人には、50 ポイントの報奨金が与えられると思います。

これに答えようとする人に感謝します! :)

4

3 に答える 3

0

StackOverflowでもこの質問を確認することで、この問題を正常に修正できました。この回答により、この問題を修正することになりました。Lion/ Xcode 4.3.1でShareKitメソッドがスウィズリングしますか?

メソッドのスウィズリングにはほとんど近づかないでください。

于 2012-08-21T01:18:58.350 に答える
0

私も Facebook 共有に ShareKit 2.0 を使用しています (つまり、[SHKFacebook shareItem:item])。現在直面している問題は発生していません。

あなたのコード (すなわち [SHKMail shareItem:item]) を iPhone Simulator 4.3 と 5.1 で問題なくテストしました。

環境が正しく設定されていないか、コードが最新ではなかった可能性があります。

于 2012-08-16T00:06:08.687 に答える
0

これは暗闇の中でのショットですが、以前に共有キットの問題で髪を引っ張ったことがあるので、何かが役立つことはわかっています.

ビューが初めて閉じられた後、currentViewnilに設定されることはないようです。

一部のメソッドが 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 に答える