2

私はFacebookと協力してマルチプレイヤーゲームを作成してきました。プレイヤーがFacebookから友達を招待して試合に参加できるようにしたいので、これにはFBFriendPickerViewControllerを使用します。ただし、選択した友達の数を最小1人、最大4人に制限したいと思います。

問題は、これを行う明確な方法がないか、少なくともFacebookの開発者向けドキュメントに記載されていないことです。私はこれを内部で防ごうとしました

- (void)friendPickerViewControllerSelectionDidChange:(FBFriendPickerViewController *)friendPicker

ただし、属性NSArray * selectionは読み取り専用であるため、実行できません。また、友達を選んで「完了」ボタンをクリックした後、ユーザーに警告することも考えていましたが、100人の友達を選択でき、その後、4人のプレイヤーの上限について警告しました。

誰かがこれを行う方法を知っていますか?または、完全なFBFriendPickerViewControllerを最初から実装する必要がありますか?

ありがとう!:D

4

4 に答える 4

1

回避策の1つは、ピッカーにラベル/メッセージを表示して、最大4人の友達をピックアップできることをユーザーに知らせることです。次に、4つを選んだ後、View Controllerを閉じますか?次に、次のようなコードを追加できます。

- (void)friendPickerViewControllerSelectionDidChange:
      (FBFriendPickerViewController *)friendPicker
{
    if ([friendPicker.selection count] > 3) {
        UIAlertView *alertView = 
            [[UIAlertView alloc] initWithTitle:@""
                                       message:@"Max number of friends selected."
                                      delegate:self cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];
        [alertView show];
    }
}

- (void)alertView:(UIAlertView *)alertView 
   clickedButtonAtIndex:(NSInteger)buttonIndex
{
    [self dismissModalViewControllerAnimated:YES];
}

たとえば、ユーザーが最大リストから編集できるようにするために、より良いエクスペリエンスを探している場合があります。その場合、GitHub tableView:didSelectRowAtIndexPath:およびtableView:didDeselectRowAtIndexPath:FBGraphObjectTableSelectionクラスのデリゲートメソッドからソースコードを取得できます。新しい「maxSelection」プロパティを追加して、それをキーオフする可能性が高いようです。

于 2013-03-05T01:23:14.200 に答える
0

以前のSDKはHTMLベースであり、Facebookでホストされていましたが、SDK3.xはオープンソースのネイティブiOSコードです。

FacebookSDKを変更できます。これはApacheライセンスの下でライセンスされており、招待を許可する友達に制限を追加します。

于 2013-03-04T16:06:39.270 に答える
0

フレンドピッカーを削除するだけでは解決策ではありません。しかし、これはです!何度も苦労した後、私はそれを手に入れました。

解決策は私が想像したよりも簡単でした。あなたfriendPickerControllerはtableViewなので、userInteractionEnabledプロパティをに設定できますNO

- (void)friendPickerViewControllerSelectionDidChange:
(FBFriendPickerViewController *)friendPicker
{
    if ([friendPicker.selection count] <=3)
    {
        self.friendPickerController.tableView.userInteractionEnabled=YES;
    }

    if ([friendPicker.selection count] >=3)
    {
    UIAlertView *maxFriendsAlert =
    [[UIAlertView alloc] initWithTitle:@"Max number of friends selected."
                               message:@"no more friends can be selected,"
                              delegate:self cancelButtonTitle:@"OK"
                     otherButtonTitles:@"Buy more friends",nil];
    [maxFriendsAlert show];
    maxFriendsAlert.tag=1;

// disable friends selection
        self.friendPickerController.tableView.userInteractionEnabled=NO;
    }
于 2013-06-06T10:42:56.430 に答える
0

返信が少し遅れましたが、私はこの問題の解決策を探していました。リストされている他の解決策よりも少しきれいであることがわかったものを使用しました。

- (void)friendPickerViewControllerSelectionDidChange:(FBFriendPickerViewController *)friendPicker {
  if ([friendPicker.selection count] > 3) {
    friendPicker.doneButton.enabled = NO;
    [[[UIAlertView alloc] initWithTitle:@"Too many selections"
                                message:@"You may only select up to 3 friends."
                               delegate:nil
                      cancelButtonTitle:@"Ok" otherButtonTitles:nil] show];
  } else {
    friendPicker.doneButton.enabled = YES;
  }
}

(UIAlertViewを介して)最大値を超えたことをユーザーに通知してから、[完了]ボタンを無効にします。カウントが有効な数に戻ったら、[完了]ボタンを再度有効にします。

于 2014-05-13T08:44:55.307 に答える