让你的控制器实现UIWebViewDelegate
. 当您这样做时,将在 Web 请求的不同阶段调用一堆回调。您可能想要实现的是这个:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
// Be sure to use mainDocumentURL, because any iframes on your form page will
// also trigger this callback
NSString *completedurl = webView.request mainDocumentURL.absoluteString;
// Let's assume you have your form url in the string property self.formurl
if ([completedurl isEqualToString:self.formurl]) {
// Display your alert view saying that the credentials were incorrect
} else {
// Perform segue to next controller
}
整个解决方案有点吓人,因为任何其他错误页面或任何会欺骗您的应用程序相信用户已成功登录的东西。更好的方法可能是检查 webview 的 html 内容以获取成功登录页面包含的一些重要字符串。您可以通过调用获取 html 正文:
NSString *yourHTMLSourceCodeString = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
另一种方法是在确认登录的 web 视图中查找 cookie。
或者更好的是,使用原生登录表单,使用原生代码提交登录请求,使用 AFNetworking 或标准 http SDK 方法,并检查响应是否成功。