这个问题有点具体,但无论如何我都会问。所以我从这里正确地遵循了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点奖励 。
感谢所有试图解答此问题的人! :)
答案 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?
几乎只是远离方法调整。