5

我的应用程序中有一个按钮可以调出一个SLComposeViewController用于 Twitter 的按钮。当视图呈现时,它会正确动画并消失。我发现当它消失时,它会被发送到当前视图的后面,我无法将它带回来。我试过手动将所有视图在代码中发送到后面,但没有成功。我觉得我的应用程序出现了根本性的问题,因为这种行为在应用程序中的导航控制器的任何级别都可以看到。下面是SLComposeViewController应用程序中作为导航栏的屏幕截图,我让 ViewController 的视图具有 Alpha 值0.0f来说明我的观点:

在此处输入图像描述

我真的不知道这里发生了什么,任何帮助将不胜感激。我用来呈现的代码SLComposeViewController非常标准,我已经在另一个应用程序中对其进行了测试并且工作正常:

NSString *message = [NSString stringWithFormat:@"#%@", [twitterInfo objectForKey:@"hashtag"]];

if ([appDelegate isSocialAvailable]) {
    // code to tweet with SLComposeViewController
    SLComposeViewController *twitter = [[SLComposeViewController alloc] init];
    twitter = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
    [twitter setInitialText:[NSString stringWithFormat: @"%@", message]];
    [self presentViewController:twitter animated:YES completion:nil];        
} 
4

2 回答 2

1

感谢您发布此信息,我也发生了同样的事情,因为我在窗口中添加了一个 CAShapeLayer 以获得渐变效果。你的帖子帮助我弄清楚这就是问题所在。

看起来发生这种情况是因为他们正在将视图层添加到窗口的子层中——我可能会在索引 0 处添加!这与您所期望的相反,即他们会将其视图作为子视图添加到呈现视图控制器的视图中。

他们一定只是认为人们不会在他们的窗口中添加图层,并且他们想确保他们不会与您的视图堆栈竞争。他们为什么将其放入索引 0 一定只是因为-[CALayer insertLayer:layer atIndex:0]我想有人习惯这样做。

我不确定,但我猜这可能是任何模态视图控制器的情况。

修复非常简单:

[viewController presentViewController:facebookViewController
                             animated:YES
                           completion:^{
    facebookViewController.view.layer.zPosition = 1000;
}];
于 2013-07-19T13:48:29.887 回答
0

经过一周的努力寻找解决方案后,我在应用程序中找到了有问题的代码,这是一个使整个应用程序的角落变圆的小技巧,通过在其中添加图像使角落看起来像圆角:

UIImage *bottomOverlayImage = [UIImage imageNamed:@"bottom_overlay.png"];
CALayer *bottomOverlay = [CALayer layer];
bottomOverlay.frame = CGRectMake(0, self.window.frame.size.height - 9, bottomOverlayImage.size.width, bottomOverlayImage.size.height);
bottomOverlay.contents = (id)bottomOverlayImage.CGImage;
bottomOverlay.zPosition = 1;
[self.window.layer addSublayer:bottomOverlay];

如果有人能告诉我为什么这段代码会弄乱 Twitter 视图,这对将来的参考很有帮助。此代码放置在应用程序委托中并在首次加载时运行。

于 2013-04-22T10:51:29.347 回答