iOS UIAlertController粗体按钮在8.3中更改

时间:2015-04-12 14:30:07

标签: ios button uialertcontroller

UIAlertController,带有两个样式集的按钮:

UIAlertActionStyle.Cancel
UIAlertActionStyle.Default

在iOS 8.2中,“取消”按钮为非粗体,“默认”为粗体。 在iOS 8.3中,他们已经转换了

您可以看到Apple自己的应用,例如,设置>邮件>添加帐户> iCloud>输入无效数据,然后在8.3上显示如下:

不支持的Apple ID

了解更多(粗体) 好的(非粗体)

而8.2则是另一种方式。

任何使其再次成为8.2的解决方法。为什么会改变?

5 个答案:

答案 0 :(得分:94)

在iOS 9中,您可以将preferredAction值设置为您希望按钮标题为粗体的操作。

    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)
    let OKAction = UIAlertAction(title: "OK", style: .Default, handler: nil)
    alert.addAction(cancelAction)
    alert.addAction(OKAction)
    alert.preferredAction = OKAction
    presentViewController(alert, animated: true) {}

右侧的OK按钮将以粗体显示。

答案 1 :(得分:14)

这是对SDK的有意更改。我刚刚收到Apple对this radar的回复,说明:

  

这是故意更改 - 取消按钮将以警告方式加粗。

不幸的是,我在各种更改日志中找不到任何内容。

因此,我们需要在某些地方对我们的应用进行更改,以使某些事情变得有意义。

答案 2 :(得分:2)

我刚刚在iOS 8.2中检查过:第一个添加按钮是非粗体,第二个添加按钮是粗体。使用此代码,取消按钮将为粗体:

[alertController addAction:[UIAlertAction actionWithTitle:@"Ok"
                                                    style:UIAlertActionStyleDefault
                                                  handler:nil]];
[alertController addAction:[UIAlertAction actionWithTitle:@"Cancel"
                                                    style:UIAlertActionStyleCancel
                                                  handler:nil]];

使用此代码,默认按钮将为粗体:

[alertController addAction:[UIAlertAction actionWithTitle:@"Cancel"
                                                    style:UIAlertActionStyleCancel
                                                  handler:nil]];
[alertController addAction:[UIAlertAction actionWithTitle:@"Ok"
                                                    style:UIAlertActionStyleDefault
                                                  handler:nil]];

我现在无法在iOS 8.3中查看,但这种行为可能是一个原因。

答案 3 :(得分:2)

自iOS 9起,var newHtml = '<span style="color:red;">new</span>'; $('#list li:last-child').append(newHtml); 具有名为preferredAction的属性。 go build . && ./main具有以下声明:

UIAlertController
  

用户从警报中采取的首选操作。 [...]首选操作仅与preferredAction样式有关;操作表未使用它。当您指定首选操作时,警报控制器会突出显示该操作的文本以使其重点突出。 (如果警报中还包含取消按钮,则首选操作将收到突出显示的信息,而不是取消按钮。)[...]此属性的默认值为var preferredAction: UIAlertAction? { get set }


下面的Swift 5 / iOS 12示例代码显示了如何显示UIAlertController.Style.alert,该文本将使用nil突出显示指定UIAlertController的文本:

UIAlertAction

答案 4 :(得分:0)

关于alertActions的Objective-c和PreferredAction的一些话。如果使用PreferredAction,则必须将BOUTH alertAction设置为style:UIAlertActionStyleDefault。如果将某些样式设置为:UIAlertActionStyleCancel,则preferredAction将被忽略

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"All you base"
                                                                         message:@"Are belong to us!" preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction* alertActionShowYes = [UIAlertAction actionWithTitle:@"YES!" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
    NSLog(@"I serve for my emperor!");
}];

UIAlertAction* alertActionNo = [UIAlertAction actionWithTitle:@"NO!" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
    NSLog(@"NOOOO it's not true!!");
}];

[alertController addAction:alertActionShowYes];
[alertController addAction:alertActionNo];

alertController.preferredAction = alertActionShowYes;
[alertController setPreferredAction:alertActionShowYes];
    
[self presentViewController:alertController animated:YES completion:nil];