UIWebView
サーバーからドキュメントをロードしました。Web ドキュメントには、いくつかのテキスト入力フィールドがあります。ユーザーがタッチして選択したフィールドの ID または名前を特定するにはどうすればよいですか。次に、入力フィールドに入力する値を割り当てたいと思います。
私は JavaScript が必要であると信じるのに十分読んだことがありますが、それを Xcode の目的の c に関連付ける方法がわかりません。どんな助けでも大歓迎です。
ありがとうロン
UIWebView
サーバーからドキュメントをロードしました。Web ドキュメントには、いくつかのテキスト入力フィールドがあります。ユーザーがタッチして選択したフィールドの ID または名前を特定するにはどうすればよいですか。次に、入力フィールドに入力する値を割り当てたいと思います。
私は JavaScript が必要であると信じるのに十分読んだことがありますが、それを Xcode の目的の c に関連付ける方法がわかりません。どんな助けでも大歓迎です。
ありがとうロン
これは、簡単な実装の簡単な例です。
<script type="text/javacript">
function populateField(fieldId, fieldText) {
$('#' + fieldId).val(fieldText);
}
var bridgeScheme = 'myapp';
(function($) {
$('#my-textfield').on('focus', function() {
var data = {
'action': 'focus',
'field-id': $(this).attr('id')
};
var encodedData = encodeURIComponent(JSON.stringify(data));
$('#iframe').attr('src', bridgeScheme + encodedData);
});
})(jQuery)
</script>
<form id="my-form">
<div>
<input type="text" id="my-textfield">
</div>
</form>
<iframe src="" id="iframe"></iframe>
いくつかのこと:
iframe
、 を通過するリクエストを生成するために使用され
UIWebView
ます。コントローラーに実装することでキャプチャできるようになります
UIWebViewDelegate
(後述)。bridgeScheme
ものであることを検出する方法です (後述)。populateField
javascript 関数がネイティブ側から呼び出され、テキスト フィールドに必要な値が入力されます。- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
// This needs to be the same value as used in the javascript
NSString *bridgeScheme = @"myapp";
// That's where we capture the request if the request's scheme matches
if ([request.URL.scheme isEqualToString:bridgeScheme])
{
// Extract the part of the request url that contains the data we need
NSString *dataString = [request.URL.absoluteString substringFromIndex:bridgeScheme.length + 1];
// The data was URL encoded
dataString = [dataString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// Here we transform the JSON string into a JSON object (dictionary)
NSData *data = [dataString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
// Extract the field id from the dictionary
NSString *fieldId = dataDictionary[@"field-id"];
// Call the javascript method on the webview
NSString *populateFieldJS = [NSString stringWithFormat:@"populateField('%@', '%@')", fieldId, @"Whatever text you want to put in there"];
[webView stringByEvaluatingJavaScriptFromString:populateFieldJS];
return NO;
}
return YES;
}
それが役に立てば幸い!