15

Sto usando ShareKit 0.2.1 su Xcode 4.2 (iOS SDK 5) per condividere il testo su Twitter. Condivide bene, ma il controller di vista modale non andrà via dopo con successo la condivisione sul dopo aver fatto clic sul pulsante Annulla (vedi sotto):ShareKit controller modale non andrà via

enter image description here

E questo è il mio codice:

-(IBAction)shareOnTwitter:(id)sender{ 


    // Item to share 
    NSString *text = @"Go away, modal view controller!"; 

    [SHKTwitter shareText:text]; 

} 

Cosa sto sbagliando?

risposta

30

Ho lo stesso problema come te. È un problema di iOS 5. È perché ShareKit utilizza un metodo su UIViewController chiamato parentViewController e in base ai documenti Apple non è più possibile utilizzare questo in iOS 5. Invece, è necessario utilizzare presentingViewController.

Quindi per risolvere il problema nel codice ShareKit, andare in SHK.m, trovare il metodo con la firma (void)hideCurrentViewControllerAnimated:(BOOL)animated, e sostituirla con:

- (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]; 
     } else if ([currentView presentingViewController] != nil) { 
      self.isDismissingView = YES; 
      [[currentView presentingViewController] dismissModalViewControllerAnimated:animated]; 
    } else 
     self.currentView = nil; 
    } 
} 

Questo funziona per me su iOS 5.

+0

Questa è la soluzione che ho implementato anch'essa –

+0

y sta cambiando l'orientamento del dispositivo – WaaleedKhan

1

Questo è il codice che uso in una delle mie app. Respinge bene.

NSURL *url = [NSURL URLWithString:@"http://itunes.apple.com/us/app/packager/id459511278?l=nl&ls=1&mt=8"]; 
NSString *twittertext = [[NSString alloc] initWithFormat: @"Tweet Text"]; 
SHKItem *item = [SHKItem URL:url twittertext]; 

// Share the item 
[SHKTwitter shareItem:item]; 
[twittertext release]; 
+0

Se si esegue [NSString stringWithFormat: @ "Testo Tweet"]; e rimuovere il [twittertext release]; linea, respinge ancora? Apparentemente l'unica differenza è che sto usando ARC ... – cfischer

1

Ho usato il seguente codice nella mia app (ARC disabilitato)

NSString *text = @"Go away, modal view controller!"; 

[SHKTwitter shareText:text]; 

posso confermare che respinge bene. Probabilmente hai cambiato del codice in SHKTwitterForm.m quando tenti di rendere compatibile Sharekit ARC. Che ha provocato il tuo bug

+0

No, ho appena compilato tutti i file ShareKit senza ARC: -fno-objc-arc – cfischer

+0

Ho appena riletto la tua domanda originale e ho trovato un po 'di confusione, come mai stai usando Xcode 4.3? Inoltre, quale versione del simulatore incontri il bug? L'hai provato anche su un dispositivo reale? – Louis

2
if (isDismissingView) 
    return; 

if (currentView != nil) 
{ 
    // Dismiss the modal view 
    if ([currentView parentViewController] != nil) 
    { 
     self.isDismissingView = YES; 
     [[currentView parentViewController] dismissModalViewControllerAnimated:animated]; 
    } 

    else { 
     //## ADD BELOW ## 
     self.isDismissingView = YES; 
     [currentView dismissModalViewControllerAnimated:animated]; 
     self.currentView = nil; 

    } 
} 
else { 
    [[self getTopViewController].navigationController popViewControllerAnimated:YES]; 
} 
Problemi correlati