没有支持的方式来执行此操作。但是,使用 Javascript,您可以完成它。这是一些步骤/代码:
等待 Webview 加载完成
GTMOAuth2ViewControllerTouch 定义了一个可以通过 NSNotificationCenter 观察到的 NSNotification。这是kGTMOAuth2WebViewStoppedLoading:
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(authControllerWebViewStoppedLoading:)
name:kGTMOAuth2WebViewStoppedLoading
object:nil];
NSNotification 对象的 userInfo 字典将引用其中的 webview。GTMOAuth2ViewControllerTouch 还允许公开访问 webview。我在我的应用程序中使用了后者。
使用 Javascript 更改电子邮件输入实体
首先,您应该知道您可以获得 webview 显示的页面的 HTML,如下所示:
NSString *html = [self.authController.webView
stringByEvaluatingJavaScriptFromString:
@"document.body.innerHTML"];
此解决方案不需要它,但它允许您确认电子邮件输入实体的 HTML 仍如下所示:
<input id="Email" name="Email" type="email"
placeholder="Email" value="" spellcheck="false" class="">
一旦您知道该电子邮件输入实体,您就可以使用 javascript 更改其文本值:
- (void)authControllerWebViewStoppedLoading:(NSNotification *)notification
{
// Assume emailAddress is a property that holds the email address you
// you want to pre-populate the Email entity with....
NSString *javascript = [NSString stringWithFormat:
@"var elem = document.getElementById(\"Email\");"
@"elem.value = \"%@\";", self.emailAddress];
[self.authController.webView
stringByEvaluatingJavaScriptFromString:javascript];
}
而已
显然,这个解决方案冒着让谷歌在没有先与你核实的情况下改变事情的风险。但是,在这种情况下发生的最糟糕的情况是电子邮件停止预填充,您的用户必须手动输入,至少在您可以发布更新之前。
希望这可以帮助。