2013-04-16 10 views
5

Twitterに使用するためにSLComposeViewControllerを呼び出すボタンがアプリにあります。ビューが表示されると、正しくアニメーション化され、表示されなくなります。私はそれが消えたときに現在のビューの後ろに送られ、私はそれを戻す方法がないことを発見しました。私は運のないコードで、すべてのビューを上に手作業で送ろうとしました。私は、この動作がアプリケーション内のナビゲーションコントローラにどのレベルでも見られるため、アプリが根本的に間違っていると感じています。以下は、アプリ内ナビゲーションバーというSLComposeViewControllerのスクリーンショットですが、私はViewControllerをのビューを作った私のポイントを説明するために0.0fのアルファ値を持っている:SLComposeViewControllerビューが返されて応答がなくなりました

enter image description here

私は本当に何が起こっているか分かりませんこことどんな助けも大歓迎です。私は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];   
} 
+0

あなたはこのコードがmainThreadから呼び出されましたか?そうでなければ、あいまいなものが現れることがあります。 VCを却下するコードはありますか? –

+0

ええ、それはメインスレッドにある、私は同じエラーで、アプリケーションでNavigationControllerのルート上でこのコードを実行しようとしました。 – SamRowley

+0

'[self.navigationController presentViewController:animated:completion:];'どちらもうまくいきませんか? –

答えて

1

投稿していただきありがとうございます。私は、グラウンドエフェクトのために私のウィンドウにCAShapeLayerを追加していたので、同じことが起こりました。あなたの記事は、これが問題だとわかった。

これは、ビューのレイヤーをウィンドウのサブレイヤーに追加しているようです(インデックス0で追加する可能性があります)。これは、あなたが予想しているものとは逆です。つまり、ビューをサブビューとしてプレゼンテーションビューのビューに追加するということです。

人々は自分のウィンドウにレイヤーを追加せず、ビュースタックと競合しないようにしたいと考えていたに違いありません。彼らがインデックス0に入れる理由は、だれかが-[CALayer insertLayer:layer atIndex:0]の習慣をしているからだと思います。

私は確信していませんが、これはどのモーダルビューコントローラでもそうだと思います。

修正は非常に単純です:

[viewController presentViewController:facebookViewController 
          animated:YES 
          completion:^{ 
    facebookViewController.view.layer.zPosition = 1000; 
}]; 
+0

応答のおかげで、私はあなたの方法であなたを助けることができてうれしいです、私はあなたの答えが私よりも詳細だとして受け入れられているようにそれを変更しました。 – SamRowley

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のビュー。このコードは、アプリケーションデリゲートに配置され、最初の読み込み時に実行されます。

関連する問題