-1

在此处输入图像描述我正在显示UIAlertController并且iOS相同的代码为iPhone and iPad. 所以任何人都可以帮助解决这个问题。正如我谷歌但没有找到任何东西来证明这一点。以下是我使用的代码:-

let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertController.Style.alert)
let okAction = UIAlertAction(title: "Button.Ok".localizedValue(), style: .destructive, handler: { _ in

})
let cancelAction = UIAlertAction(title: "Button.Cancel".localizedValue(), style: .default, handler: { _ in
    alert.dismiss(animated: true, completion: nil)
})
alert.accessibilityLabel = self.viewModel.deleteUserConfirmationAccessibilityId()
alert.addAction(okAction)
alert.addAction(cancelAction)
self.present(alert, animated: true, completion: nil)

所以问题是这样的:- iPhone:在对 iPhone 中的 UIAlertController 进行自动化测试时,“删除所有保存的”文本位于 DOM 结构的 UIAView 下。iPad:在 iPad 中对 UIAlertController 进行自动化测试时,“删除所有保存的”文本位于 DOM 结构的 UIView 下。

那么为什么 UIAlertController 结构会出现差异,因为 iPhone iPad 显示相同代码的 UIView 和 iPhone UIAView。

4

1 回答 1

0

您必须为 ipad 添加 popoverpresentation 控制器。请看下面的代码

let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertController.Style.alert)
let okAction = UIAlertAction(title: "Button.Ok".localizedValue(), style: .destructive, handler: { _ in

})
let cancelAction = UIAlertAction(title: "Button.Cancel".localizedValue(), style: .default, handler: { _ in
alert.dismiss(animated: true, completion: nil)
})
alert.accessibilityLabel = 
self.viewModel.deleteUserConfirmationAccessibilityId()
alert.addAction(okAction)
alert.addAction(cancelAction)
//self.present(alert, animated: true, completion: nil)


if(UIDevice.current.userInterfaceIdiom == .pad){
        // for iPAD support:
        alert.popoverPresentationController?.sourceView = self.view
        alert.popoverPresentationController?.sourceRect = CGRect(x:self.view.bounds.width / 2.0, y:150, width:1.0, height:1.0)
        self.present(actionSheet, animated: true, completion: nil)
}else{
        // for iPHONE support:
        let rootViewController: UIViewController = (UIApplication.shared.keyWindow?.rootViewController)!
        rootViewController.present(alert, animated: true, completion: nil)
}
于 2018-12-10T10:13:55.757 回答