UIActionSheet分隔符具有非常意外的行为

时间:2014-05-09 16:49:17

标签: ios ios7 uiactionsheet

我正在创建一个标准UIActionSheet,其中我不需要破坏性按钮和底部的取消按钮。我的其他按钮标题存储在NSArray

但是,我对行分隔符的行为非常奇怪,特别是当我尝试添加标题时。

我在这里完全失败了。帮助

实施#1(无标题)

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
for (NSString *title in self.myArray) {
    [actionSheet addButtonWithTitle:title];
}
actionSheet.cancelButtonIndex = [actionSheet addButtonWithTitle:@"Cancel"];
[actionSheet showFromToolbar:(UIToolbar*)self.toolbarView];

实施#2(带标题)

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Title" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
for (NSString *title in self.myArray) {
    [actionSheet addButtonWithTitle:title];
}
actionSheet.cancelButtonIndex = [actionSheet addButtonWithTitle:@"Cancel"];
[actionSheet showFromToolbar:(UIToolbar*)self.toolbarView];

结果#1(无标题)

如果我有10个或更少的按钮,不包括取消按钮,则所有按钮都适合屏幕。行分隔符扩展了操作表的整个宽度。这是预期的行为。

当我有11个或更多按钮时,操作表实现滚动。分隔符现在一直向左延伸,但在右边留出空间(~25px?)。此外,当我向上和向下滚动时,每次在最后一个非取消按钮之后添加/删除一个额外的分隔符(扩展全宽)。

  1. 打开行动表
  2. 滚动到底部 - >最后一个按钮
  3. 后没有行分隔符
  4. 滚动到顶部
  5. 滚动到底部 - >在最终按钮
  6. 之后延伸全宽的行分隔符
  7. 滚动到顶部
  8. 滚动到底部 - >最后一个按钮
  9. 后没有行分隔符
  10. ......等。
  11. 结果#2(带标题)

    如果我有10个或更少的按钮,不包括取消按钮,则所有按钮都适合屏幕。行分隔符扩展了操作表的整个宽度。还有一个分隔符,在顶部标题和第一个按钮之间延伸全宽。这是预期的行为。

    当我有11个或更多按钮时,操作表实现滚动。分隔符现在一直向左延伸,但在右边留出空间(~25px?)。标题和按钮之间的分隔符在分隔符的两侧留出空间(~5px)。现在当我向上和向下滚动时,我得到了非常奇怪的分隔符行为,分隔符在奇怪的地方被添加和删除。

    1. 打开行动表
    2. 滚动到底部 - >倒数第二个到最后一个按钮之间的行分隔符,略低于已存在的行分隔符(~1px?)。新行分隔符扩展了整个宽度。
    3. 滚动到顶部 - >标题和第一个按钮之间添加了一个额外的行分隔符。这个线条分隔符宽度相同(两边留有一点间隙),是深黑色而不是浅灰色,比另一个分隔符低1个左右。
    4. 滚动到底部 - >新行分隔符仍然存在,但现在是黑色而不是浅灰色。
    5. 进一步滚动导致无变化
    6. 如果我快速向上和向下滚动,我实际上可以在列表中的第一个和第二个按钮之间获得另一个额外的分隔符,黑色,全宽。

      尝试解决方案

      我想也许我不应该使用内置的init函数,因为我没有真正使用任何参数。没有标题的行为没有区别。

      UIActionSheet *actionSheet = [[UIActionSheet alloc] init];
          for (NSString *title in self.myArray) {
          [actionSheet addButtonWithTitle:title];
      }
      actionSheet.title = @"Title";
      actionSheet.cancelButtonIndex = [actionSheet addButtonWithTitle:@"Cancel"];
      [actionSheet showFromToolbar:(UIToolbar*)self.toolbarView];
      

      尝试解决方案#2(根据Leo Natan)

      UIActionSheet *actionSheet =[[UIActionSheet alloc] initWithTitle:@"Title" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Destroy" otherButtonTitles:@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",nil];
      [actionSheet showInView:[UIApplication sharedApplication].keyWindow];
      

      仍然没有变化。如果“UIActionSheet”上有足够的项目使其滚动,则分隔符行为会变得不稳定。

0 个答案:

没有答案