迁移到 Xcode 7 后 UIAlertView 和 UIWebView 不起作用
Posted
技术标签:
【中文标题】迁移到 Xcode 7 后 UIAlertView 和 UIWebView 不起作用【英文标题】:UIAlertView and UIWebView don't work after migration to Xcode 7 【发布时间】:2015-10-04 18:28:06 【问题描述】:我在 Xcode 7 中编写了以下 swift 代码,但在 ios 9.0 中不推荐使用“UIAlertView”。此外,webview 什么也不显示。它在 Xcode 6 中运行良好。
@IBOutlet weak var WebView: UIWebView!
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
view.backgroundColor = UIColor.redColor()
let alert = UIAlertView(title: "This App needs internet connection",
message: "If not connected now, please make sure your device connect to internet and restart it.",
delegate: nil,
cancelButtonTitle: "OK")
alert.show()
let URL = NSURL(string: "http://saloonjob.com/catering")
WebView.loadRequest(NSURLRequest(URL: URL!))
【问题讨论】:
【参考方案1】:1)UIAlertView
从 iOS8 开始,UIActionSheet 和 UIAlertView 将被新的 UIAlertController 取代。
UIAlertController 的实例可以像使用 presentViewController:animated:completion: 方法的任何其他 UIViewController 一样以模态方式呈现在屏幕上。使 UIAlertController 实例区分作为 ActionSheet 还是作为 AlertView 工作的原因是您在创建它时传递的样式参数。
2)Web 视图
“如果你正在开发一个新的应用程序,你应该只使用 HTTPS。如果你有一个现有的应用程序,你现在应该尽可能多地使用 HTTPS,并为尽快迁移应用程序的其余部分制定计划,”Apple 在其 iOS 9 的预发布文档中解释道。 检查 HTTPS url,webview 将加载..
【讨论】:
让 URL = NSURL(string: "ssls.com") WebView.loadRequest(NSURLRequest(URL: URL!)) 但我仍然得到输出语句“2015-10-05 18:03:51.204 HKCateringApp[1326:45336] NSURLSession/NSURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL, -9824)” 不明白什么意思,我用的是https。【参考方案2】:2) 网页视图: 仅使用 HTTPS 是不够的。 此外,服务器应支持最新的 SSL 技术。
请阅读这篇文章: http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/
如果您无法控制服务器端,则可以将此标志添加到 info.plist:
<key>NSAppTransportSecurity</key>
<dict>
<!--Include to allow all connections (DANGER)-->
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
注意危险提示,你应该避免这个解决方案。
【讨论】:
以上是关于迁移到 Xcode 7 后 UIAlertView 和 UIWebView 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 4.2、UIAlertView 和 UIAlertButton?
在 iOS 7 SDK 中关闭 UIAlertview 后 UIView 没有响应