これを行う方法はサポートされていません。ただし、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];
}
それでおしまい
明らかに、このソリューションでは、Google が最初に確認せずに変更を加えてしまうリスクがあります。ただし、その場合に発生する最悪の事態は、少なくとも更新をリリースできるようになるまで、電子メールの事前入力が停止し、ユーザーが手動で入力する必要があることです。
お役に立てれば。