我一直在与Facebook合作制作多人游戏。我想让玩家能够邀请他的Facebook朋友参加比赛,所以我使用FBFriendPickerViewController。但是,我想将所选朋友的数量限制为最小1位玩家和最大4位。
问题在于没有明显的方法可以做到这一点,或者至少在Facebook的开发者文档中没有提及。我试图阻止这个
- (void)friendPickerViewControllerSelectionDidChange:(FBFriendPickerViewController *)friendPicker
但由于属性NSArray *选择是只读的,因此无法完成。在选择了朋友并点击了“完成”按钮之后,我还想过警告用户,但是有点蹩脚,允许他选择100个朋友,然后警告他关于4个玩家的最大限制。
有谁知道怎么做?或者我是否必须从头开始实现完整的FBFriendPickerViewController?
谢谢! :D
答案 0 :(得分:1)
可以在选择器上显示标签/消息,让用户知道他们最多可以接送4个朋友。选择四个后你解雇视图控制器?然后你可以添加这样的代码:
- (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”属性并关闭它。
答案 1 :(得分:0)
以前的SDK是基于HTML的,并且在Facebook上托管,但SDK 3.x是具有开源的本机iOS代码。
您可以修改Facebook SDK。它在Apache许可下获得许可,并为您允许邀请的朋友添加限制。
答案 2 :(得分: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;
}
答案 3 :(得分: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),然后我禁用了完成按钮。当计数返回到有效数字时,我重新启用完成按钮。