gpt4 book ai didi

iphone - 使用超过 6 个自定义按钮时 UIActionSheet buttonIndex 值错误?

转载 作者:IT王子 更新时间:2023-10-29 07:55:29 37 4
gpt4 key购买 nike

我在 iPhone (iOS 4.2) 上使用 UIActionSheet 时发现了一个奇怪的问题。考虑这段代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

[self.window addSubview:viewController.view];
[self.window makeKeyAndVisible];

UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:@"TestSheet"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles: nil];

[actionSheet addButtonWithTitle:@"one"];
[actionSheet addButtonWithTitle:@"two"];
[actionSheet addButtonWithTitle:@"three"];
[actionSheet addButtonWithTitle:@"four"];
[actionSheet addButtonWithTitle:@"five"];
[actionSheet addButtonWithTitle:@"six"];
//uncomment next line to see the problem in action
//[actionSheet addButtonWithTitle:@"seven"];

[actionSheet showInView:window];
[actionSheet release];

return YES;
}
- (void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
NSLog(@"buttonIndex: %d, cancelButtonIndex: %d, firstOtherButtonIndex: %d",
buttonIndex,
actionSheet.cancelButtonIndex,
actionSheet.firstOtherButtonIndex);
}

如果您启动此应用程序,操作表将按预期运行。这意味着 cancelButtonIndex 始终为 0,并且正确报告了按钮索引。 1 用于按钮“一”等。如果您在添加第七个按钮的行中发表评论,操作表会生成一种表格 View ,取消按钮位于额外的一行。如果我在这种情况下按下“一个”按钮,则 buttonindex 变量为 0,但 cancelButtonIndex 也为 0。无法判断用户是否点击了“取消”或“一个”按钮。这似乎不应该是这样的。有人不同意吗?感谢您的帮助。

最佳答案

我遇到了同样的问题,尽管我已经将取消按钮作为操作表中的最后一个按钮并相应地设置了它的索引。我的问题与“破坏性”按钮有关。经过一些调查,这是我对这个问题的看法:

  • 将 N 个按钮添加到操作表后,它会切换其布局,将“破坏性”按钮放在顶部,将“取消”按钮放在底部。中间是一个包含所有其他按钮的可 ScrollView 。其他来源表明这是一个 TableView 。

  • 对于纵向,N 为 7,对于横向,N 为 5。在更大的 4"屏幕上,对于纵向方向,N 为 9。这些数字适用于所有按钮,包括取消和破坏性。要明确的是,N 是切换前按钮的最大数量。N+1 按钮导致 UIActionSheet 切换到可 ScrollView 。

  • 您最初将“取消”和“破坏性”按钮放在操作表中的哪个位置并不重要。达到限制后,“破坏性”按钮将移至顶部,而“取消”按钮将移至底部。

  • 问题是索引没有相应调整。因此,如果您最初没有将 Cancel 添加为最后一个按钮,将 Destructive 添加为第一个,则将在 actionSheet:clickedButtonAtIndex: 中报告错误的索引,如初始报告所述。

  • 因此,如果您的操作表中要有 N 个以上的按钮,您必须将破坏性按钮添加到操作表中,作为操作表中的第一个按钮。您必须添加取消按钮作为添加到操作表的最后一个 按钮。最初构建工作表时,只需将两者都保留为零,如另一个答案中所述。

关于iphone - 使用超过 6 个自定义按钮时 UIActionSheet buttonIndex 值错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5262428/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com