2011-09-05 47 views
0

我有這樣的一段代碼,我使用的顯示登錄對話框/發佈到用戶牆上作用:如果我連這個代碼Facebook的登錄對話框不會與UIAlertView中工作,但與UIButton的

_posting = YES; 
// If we're not logged in, log in first... 
if (![_session isConnected]) { 
    self.loginDialog = nil; 
    loginDialog = [[FBLoginDialog alloc] init]; 
    [_loginDialog show]; 
} 
// If we have a session and a name, post to the wall! 
else if (_facebookName != nil) { 
    [self postToWall]; 
} 
// Otherwise, we don't have a name yet, just wait for that to come through. 

一個按鈕,它的工作原理。然而,當我把它放在下面的方法中:

- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 
    // the user clicked one of the OK/Cancel buttons 
    if (buttonIndex == 0) 
    { 
     NSLog(@"No"); 
    } 
    else 
    {  
     _posting = YES; 
     // If we're not logged in, log in first... 
     if (![_session isConnected]) { 
      self.loginDialog = nil; 
      _loginDialog = [[FBLoginDialog alloc] init];  
      [_loginDialog show]; 
     } 
     // If we have a session and a name, post to the wall! 
     else if (_facebookName != nil) { 
      [self postToWall]; 
     } 
     // Otherwise, we don't have a name yet, just wait for that to come through. 

    } 
} 

它不工作..

任何人都可以,爲什麼這可能是解釋一下嗎?當我說它不起作用時,我的意思是對話框在關閉之前非常簡短地顯示。該應用程序不會崩潰。

+0

你是否設置了UIAlertview的deleagate? –

+0

是的,我在頭文件中。 –

回答

0

想通了,用下面一行在有條件的,而不是Facebook的對話框代碼:

[self performSelector:@selector(showFBLoginDialog) withObject:nil afterDelay:1]; 

看來你需要等待與警報視圖關聯變得可用的資源。

編輯:showFBLoginDialog方法包含最初在條件中的對話框代碼。

0

這不再是在IOS 5

一個問題,我不認爲這是一個解決方案,而不是速戰速決/黑客。等待1秒延遲可能看起來有點長,我不知道這個延遲可以設置多低,模擬器不應該用來評估這個,並且我不再有運行iOS 4的設備。有興趣瞭解一下。

也許最好是將KVO添加到警報視圖對象中,以更準確地瞭解它何時被銷燬,並在該點觸發對話框。

7

等待1秒不是一個解決方案,實際上並沒有解決問題。

的問題是,你聽:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 

這應該是:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 

因爲在clickedButtonAtIndex功能的觀點並沒有關閉,這可能會導致問題。

編輯: 使它在iOS 4的工作,你的Facebook登錄添加調用的方法,並呼籲在didDismissWithButtonIndex以下功能:

[自performSelectorOnMainThread:@selector(facebookOpenAction)withObject:無waitUntilDone:NO ]。

+0

解僱是一個很好的解決方案,10倍很多 –

+0

我同意Applicasa! – Myxtic

+0

你是我的英雄! – Denis

相關問題