Нет взаимодействия с Facebook iOS SDK диалог после перехода на поток? - PullRequest
1 голос
/ 20 марта 2012

Я немного поиграюсь с Facebook iOS SDK.

У меня есть приложение TabBar (с MainWindow.xib), и я успешно интегрировал Facebook SDK.

Проблемаявляется то, что ни один из всплывающих диалогов Facebook не реагирует на мои взаимодействия с пользователем.

Например.Я хочу опубликовать что-то в стене.Facebook SDK открывает диалоговое окно, но если я пытаюсь взаимодействовать с ним, ничего не происходит.

Журнал сообщает мне: [Переключение на процесс 2365 thread 0x12d07]

Как это исправить?

Я использую симулятор.

Важный код в AppDelegate выглядит так, на самом деле он более или менее такой же, как на developer.facebook.com:

Спасибо большое.

// AppDelegate.h

@interface AppDelegate : UIResponder <UIApplicationDelegate, FBSessionDelegate, FBDialogDelegate> {
    Facebook *facebook;
}

@property (nonatomic, retain) Facebook *facebook;
@property (strong, nonatomic) IBOutlet UIWindow *window;
@property (strong, nonatomic) IBOutlet UITabBarController *tabBarController;


// AppDelegate.m

@implementation AppDelegate
@synthesize facebook;

@synthesize window = _window;
@synthesize tabBarController = _tabBarController;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    facebook = [[Facebook alloc] initWithAppId:@"APP_ID" andDelegate:self];

    if (![facebook isSessionValid]) {
    [facebook authorize:nil];
    }

    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}
@end

С уважением.

Ответы [ 2 ]

0 голосов
/ 16 мая 2012

Я только что столкнулся с этой же проблемой. Проблема для меня заключалась в том, что мой ключ окна UIApplication имел userInteractionEnabled = NO. Поэтому отсутствие этого дополнительного UIWindow исправило его для меня (подробнее ниже).

Я нашел этот код в FBDialog.m

- (void)showWebView {   
    UIWindow* window = [UIApplication sharedApplication].keyWindow; 
    if (!window) {  
        window = [[UIApplication sharedApplication].windows objectAtIndex:0];   
    }   
    _modalBackgroundView.frame = window.frame;  
    [_modalBackgroundView addSubview:self]; 
    [window addSubview:_modalBackgroundView];   
    ....

так что это добавит диалог к ​​ключевому окну. У меня было только одно окно, поэтому я подумал. Оказывается, SVProgressHUD создаст новое окно с отключенным взаимодействием с пользователем и сделает его ключевым (имеет смысл).

Я предполагаю, что другие вещи в стиле HUD делают это с. Я только показывал HUD, когда была сделана некоторая подготовительная работа, так что к тому времени, когда я смогу показать диалог, я все равно смогу удалить его. Так что это было мое решение.

Я выкопал это, позвонив

    NSLog(@"%@", [[UIApplication sharedApplication] windows]);
    NSLog(@"%@", [UIApplication sharedApplication].keyWindow);

прямо перед тем, как я собирался показать диалог и заметил

  • У меня было два UIWindow
  • ключ userInteractionEnabled был установлен на NO

Надеюсь, это поможет.

0 голосов
/ 11 апреля 2012

Вам нужен метод, который публикует в фиде, как показано ниже

-(void)postToFeed
{
    MyAppAppDelegate *sharedAppDelegate = (MyAppAppDelegate *)[[UIApplication sharedApplication] delegate];
    [sharedAppDelegate.facebook dialog:@"feed" andParams:params andDelegate:self]; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...