【问题标题】:change position of cancel button in UIAlertView?更改 UIAlertView 中取消按钮的位置?
【发布时间】:2011-05-26 07:04:10
【问题描述】:

我注意到,当我从 iPhone 主屏幕删除应用程序时,出现的警报视图左侧显示删除按钮,右侧显示取消按钮。但是,当我使用 UIAlertView 在我的应用程序中构建删除功能时,按钮似乎只显示左侧的取消和右侧的删除。

我希望我的应用与操作系统保持一致,但我不知道如何让“取消”按钮首先出现。有人知道吗?

UIAlertView *alert = [[UIAlertView alloc] 
                      initWithTitle:@"Delete Song" 
                      message:@"Are you sure you want to delete this song? This will permanently remove it from your database." 
                      delegate:self 
                      cancelButtonTitle:@"Cancel" 
                      otherButtonTitles:@"Delete", nil];

我尝试设置 alert.cancelButtonIndex = 1,但没有效果。

【问题讨论】:

    标签: iphone ios ios4 uialertview hig


    【解决方案1】:

    啊,我刚刚想出了如何改变它。 cancelButtonTitle 参数是可选的,因此您可以在所需的任何位置添加自定义按钮,然后将其指定为取消按钮,如下所示:

    UIAlertView *alert = [[UIAlertView alloc] 
                          initWithTitle:@"Delete Song" 
                          message:@"Are you sure you want to delete this song? This will permanently remove it from your database." 
                          delegate:self 
                          cancelButtonTitle:nil
                          otherButtonTitles:@"Delete", @"Cancel", nil];
    alert.cancelButtonIndex = 1;
    

    这会将“删除”按钮放在左侧,将“取消”按钮放在右侧并突出显示“取消”按钮。

    【讨论】:

    • 我以为我要疯了,直到我看到这个。我尝试使用@"NO" 作为取消按钮,使用@"YES" 作为其他按钮标题,但 buttonIndex 0 是取消按钮。除了Apples部分的错误之外,我真的无法将其视为其他任何东西,但是我有什么资格质疑我无法理解的东西呢?不过,这种方法效果很好,谢谢!
    • 我发现这不再适用于 iOS 8.3(在模拟器中),但适用于 iOS 7.1。尽管某些 Apple 警报仍然确实在右侧放置“取消”,即使在 8.3 中也是如此。 (我想知道他们是怎么做到的!)
    【解决方案2】:

    Apple 在主屏幕上使用警报视图的一个可能原因是,它曾经要求用户对他们要删除的应用程序进行评分(现在不再)。他们可能将“取消”按钮设置为浅色,因为这被认为是一种破坏性操作(删除应用程序及其数据)。

    我猜您可以反转标题 (cancelButtonTitle:@"Delete" otherButtonTitles:@"Cancel", nil) 并以相反的方式处理这些按钮的点击(不确定 Apple 是否也这样做了)。不过那会有点尴尬。改用操作表怎么样?

    【讨论】:

    • 嗯,你知道操作系统其他部分的标准是什么吗?我想不出在哪里寻找这个的任何其他例子。无论如何,如果从主屏幕删除应用程序使用非标准设置,那么我不需要匹配。
    • @arlomedia:我没有看到任何其他删除警报。 SMS 和日历警报都将它们的取消(关闭)按钮放在左侧,就像 SDK 一样。 AFAIK,任何其他涉及删除内容的地方(照片、联系人、日历事件、笔记、iPod 播放列表)都使用操作表。
    • 好吧,我就让它保持原样。感谢您的信息。
    • [developer.apple.com/library/ios/#documentation/userexperience/… 指定:“在提出潜在风险操作的双按钮警报中,取消操作的按钮应位于右侧且为浅色。建议人们可能想要的良性操作的两按钮警报,取消操作的按钮应位于左侧且为深色”。我想这就是按钮的顺序/颜色不同的原因。
    猜你喜欢
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多