要約:のUIWebView内の埋め込みHTMLでの焼成を停止しました(と私はしばらくの間はコードを変更しませんでした)どのようなアイデアを私はそれを戻すことができますか?は、UIWebViewのfb:likeのように、edge.create/removeイベントの焼き付きを伴う
FacebookのようなボタンでUIWebViewを持つiOSアプリケーションがあります。
このダイアログが表示される前にFacebookにログインすると、ログインロジックが発生しません。
私は/ unlikeのようにクリックすることができますが、うまくいきますが、それはダイアログを閉じるために使用されました。数日前にこれが壊れました。ダイアログを閉じるには、edge.create/edge.removeイベントを購読してください。ここで
は私のHTMLページです:
<html>
<head>
<style type='text/css'>
* { -webkit-touch-callout: none; -webkit-user-select: none; }
body { margin:0px; }
.fb_edge_comment_widget { display: none !important; }
</style>
</head>
<body>
<div id='fb-root'></div>
<script src='http://connect.facebook.net/en_US/all.js#xfbml=1'></script>
<script>
function forwardEvent(name) {
var iframe = document.createElement('iframe');
iframe.setAttribute('src', 'event:' + name);
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
};
function beginForwardingEvent(name) {
FB.Event.subscribe(name, function(r) { forwardEvent(name); });
};
function beginForwardingEvents(names) {
for (var i = 0; i < names.length; i++) {
beginForwardingEvent(names[i]);
}
};
beginForwardingEvents(['edge.create', 'edge.remove', 'xfbml.render']);
</script>
<fb:like href='%@'
send='false'
layout='%@'
width='%.0f'
show_faces='%@'
action='%@'
colorscheme='%@'
font='%@'
></fb:like>
</body>
</html>
、ここでは、私はObjective-Cのコードでのイベントキャプチャ方法です:ので、もう一度
- (void)didObserveFacebookEvent:(NSString *)fbEvent {
if ([fbEvent isEqualToString:@"edge.create"] && [_delegate respondsToSelector:@selector(facebookLikeViewDidLike:)])
[_delegate facebookLikeViewDidLike:self];
else if ([fbEvent isEqualToString:@"edge.remove"] && [_delegate respondsToSelector:@selector(facebookLikeViewDidUnlike:)])
[_delegate facebookLikeViewDidUnlike:self];
else if ([fbEvent isEqualToString:@"xfbml.render"] && [_delegate respondsToSelector:@selector(facebookLikeViewDidRender:)])
[_delegate facebookLikeViewDidRender:self];
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
// Allow loading Like button XFBML from file
if ([request.URL.scheme isEqualToString:@"file"])
return YES;
// Allow loading about:blank, etc.
if ([request.URL.scheme isEqualToString:@"about"])
return YES;
// Block loading of 'event:*', our scheme for forwarding Facebook JS SDK events to native code
else if ([request.URL.scheme isEqualToString:@"event"]) {
[self didObserveFacebookEvent:request.URL.resourceSpecifier];
return NO;
}
....
}
を - edge.createは、発射停止(と私がやりましたコード内で何も変更しないでください) - どのように私はそれを取り戻すことができますか?
ありがとうございます。
UPDATE: FB bug reportedがあるが、私はまだそれがFBRELLサイト上で動作しない理由を理解したいと思いますが、iOS版のUIWebView内では機能しません。 iOSのダイアログに微調整が必要な場合がありますか?このための回避策はありますか?答えを得ることを望む恩恵を始めました。
はい!それはそれでした - 遅い返事には申し訳ありません。これらのイベントは、リモートHTMLファイルでのみ発生します。 – avs099
ありがとうございます。これも私のために働いた! – peterept