2012-12-07 2 views
2

Salut J'ai intégré Facebook SDK pour une application iOS 6. L'authentification Facebook & partage fonctionne parfaitement, mais il n'y a aucune disposition pour fermer le FB Dialogue box.ie. Lorsque la boîte de dialogue FB s'ouvre, elle ne sera fermée qu'après l'authentification réussie. Aucune disposition pour fermer ou revenir en arrière .Comment puis-je créer un bouton de fermeture? L'extrait de code que j'utilise a été montré ci-dessous.Merci à l'avance.FacebookSDK dans iOS Ne pas afficher le bouton de fermeture et ne pas fermer

-(NSDictionary *)shareFacebook 
{ 

    NSDictionary *userInfo; 
    if (FBSession.activeSession.isOpen) 
    { 

     if (FBSession.activeSession.isOpen) 
     { 

      [self.closeButton setHidden:NO]; 
      [FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection, id<FBGraphUser> user, NSError *error) { 

       NSUserDefaults *standardUserDefaults=[NSUserDefaults standardUserDefaults]; 
       [standardUserDefaults setObject:user forKey:@"fbUserInfo"]; 



        [self.manager authenticateUserUsingFB:[user objectForKey:@"email"]]; 


      }]; 
     } 

    } 
    else{ 
     NSLog(@"fb session not active."); 
     [self openSessionWithAllowLoginUI:YES]; 
    } 
    return userInfo; 
} 

- (void)openSessionWithAllowLoginUI:(BOOL)allowLoginUI { 

    NSArray *permissions = [[NSArray alloc] initWithObjects: 

          @"user_photos", 
          @"publish_actions", 
          @"read_stream", 
          @"friends_photos", 
          @"email" ,nil]; 

    [FBSession setActiveSession:[[FBSession alloc] initWithPermissions:permissions]]; 


    [[FBSession activeSession] openWithBehavior:FBSessionLoginBehaviorForcingWebView 

           completionHandler:^(FBSession *session, 

                FBSessionState state, 

                NSError *error) { 

            NSLog(@" state=%d",state); 
            if(FBSessionStateOpen) 
            { 
             [self shareFacebook]; 
            } 
           }]; 

} 

Répondre

2

Je sais ce qui cause ce bug! Le bouton et la vue des icônes (il y a deux vues dans le coin supérieur droit de la boîte de dialogue - un bouton de fermeture et une vue d'icône) existent réellement (vous pouvez cliquer dessus pour les voir) mais pas visibles. Cela est dû au fait que le projet ne peut pas voir les fichiers d'image réels qui se trouvent dans FBDialog.bundle. Vous devez copier ces images de l'ensemble et les ajouter au projet, puis définir les images directement. Votre méthode init peut ressembler à ceci:

//This is your FBDialog.m file 
- (id)init { 
    if (self = [super initWithFrame:CGRectZero]) { 
    ......... 

    UIImage* iconImage = [UIImage imageNamed:@"fbicon.png"]; 
    UIImage* closeImage = [UIImage imageNamed:@"close.png"]; 

    _iconView = [[UIImageView alloc] initWithImage:iconImage]; 
    [self addSubview:_iconView]; 

    _closeButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; 
    [_closeButton setImage:closeImage forState:UIControlStateNormal]; 
    [_closeButton addTarget:self action:@selector(cancel) 
     forControlEvents:UIControlEventTouchUpInside]; 

    ......... 

Peut être il y a une meilleure façon de corriger ce bug, mais cela a fonctionné pour moi.

Questions connexes