2013-04-16 3 views
5

Ich habe eine Schaltfläche in meiner App, um eine SLComposeViewController für die Verwendung mit Twitter zu bringen. Wenn die Ansicht angezeigt wird, wird sie korrekt animiert und verschwindet. Ich habe festgestellt, dass wenn es verschwindet, es auf die Rückseite der aktuellen Ansicht gesendet wird und ich keine Möglichkeit habe, es zurück zu bringen. Ich habe versucht, manuell alle Ansichten oben auf die Rückseite in Code ohne Glück zu senden. Ich habe das Gefühl, dass etwas grundsätzlich mit meiner App nicht stimmt, da dieses Verhalten auf dem Navigationscontroller in der App auf jeder Ebene zu sehen ist. Unten ist ein Screenshot der SLComposeViewController die Navigationsleiste in der App zu sein, habe ich die Viewcontroller Ansicht einen Alpha-Wert von 0.0f hat meinen Punkt zu illustrieren:SLComposeViewController Ansichten gesendet, um zurück in der App und reagiert nicht mehr

enter image description here

Ich weiß nicht wirklich, was los ist hier und jede Hilfe wird sehr geschätzt werden. Der Code, den ich die SLComposeViewController präsentieren bin mit ziemlich Standard und ich habe es in einer anderen App getestet und funktioniert einwandfrei:

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

Sind Sie sicher, dass dieser Code aus dem Mainthread aufgerufen wird? Wenn nicht, können einige obskure Dinge erscheinen. Haben Sie einen Code, der die VC ablehnt? –

+0

Ja, es ist im Hauptthread, ich habe versucht, diesen Code auf dem Root des NavigationController in der App mit dem gleichen Fehler auszuführen. – SamRowley

+0

so '[self.navigationController presentViewController: animiert: Vervollständigung:];' funktioniert auch nicht? –

Antwort

1

Danke für das Posten, ich hatte das gleiche passiert, weil ich einen CAShapeLayer zu meinem Fenster für einen Gradienten-Effekt hinzugefügt habe. Ihre Post hat mir geholfen, herauszufinden, dass dies das Problem war.

Es sieht so aus, als wäre das, weil sie den Layer ihrer Ansicht den Sublayern des Fensters hinzufügen - bei Index 0 könnte ich hinzufügen! Dies steht im Gegensatz zu dem, was Sie erwarten würden, nämlich dass sie ihre Sicht als eine Unteransicht zu der Ansicht des präsentierenden Ansicht-Controllers hinzufügen würden.

Sie müssen einfach gedacht haben, dass die Leute keine Layer zu ihrem Fenster hinzufügen und sie sicherstellen wollen, dass sie nicht mit Ihrem View Stack konkurrieren. Warum sie es in den Index 0 setzen, muss nur sein, weil jemand die Angewohnheit hat, -[CALayer insertLayer:layer atIndex:0], nehme ich an.

Ich bin mir nicht sicher, aber ich vermute, das könnte der Fall mit jedem Modal View Controller sein.

Die Lösung ist ganz einfach:

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

Danke für die Antwort, ich bin froh, dass ich dir auf deinem Weg helfen konnte, ich habe es geändert, so dass deine Antwort die akzeptierte ist, da sie detaillierter ist als meine. – SamRowley

0

Nach einer Woche meine Haare ausreißen eine Lösung dieses Problems finden ich die säumige gefunden haben Code in der App, ein kleiner Trick, um die Ecken der ganzen App abzurunden, gut machen es scheinen, wie die Ecken durch das Hinzufügen eines Bildes dort abgerundet sind:

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

Wenn mir jemand sagen könnte, warum dieser Code würde vermasseln die Twitter-Ansicht, die für zukünftige Referenz wirklich hilfreich wäre. Dieser Code wurde im App-Delegaten platziert und beim ersten Laden ausgeführt.

Verwandte Themen