2012-01-07 11 views
0

Facebookから情報を取得しようとしていますが、デフォルトのFacebook APIを使用しないようにしています(自動埋め込みできないためフィードを行う際のテキストフィールド)。iOS Facebook API - UIWebViewにデータを埋め込む方法

私は、テキストビューと共有ボタンとキャンセルボタンを持つカスタムビューを作成していますが、アプリについての情報も表示したいと思います。私はこれを行う方法がわかりません。

以下のイメージは、FBDialog(ネイティブFB APIの一部)です。私が望むのは、赤いボックスに情報だけを表示することです。これは、手動で指定されたパラメータと、FBからアプリケーション自体(「via ...」)に関するものが混在しています。

FBから「via for iOS」をどのように引き出すことができるのですか?(赤いボックスの他のものはすべて手作業ではありませんが注意してください)、uiwebviewに入れてくださいそれが唯一の方法だと仮定して)?または、という情報をちょうどにして、「フィード」(FBからのテキストボックスも表示されます)のようなアクションを指定せずに情報を表示することはできますか?ここで

は、このダイアログポップを構成するコードです:

currentAPICall = kDialogFeedUser; 
SBJSON *jsonWriter = [[SBJSON new] autorelease]; 

// The action links to be shown with the post in the feed 
NSArray* actionLinks = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys: 
                 @"Get Started",@"name",@"http://m.facebook.com/apps/hackbookios/",@"link", nil], nil]; 
NSString *actionLinksStr = [jsonWriter stringWithObject:actionLinks]; 
// Dialog parameters 
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
           @"I'm using the Hackbook for iOS app", @"name", 
           @"Hackbook for iOS.", @"caption", 
           @"Check out Hackbook for iOS to learn how you can make your iOS apps social using Facebook Platform.", @"description", 
           @"http://m.facebook.com/apps/hackbookios/", @"link", 
           @"http://www.facebookmobileweb.com/hackbook/img/facebook_icon_large.png", @"picture", 
           actionLinksStr, @"actions", 
           nil]; 

HackbookAppDelegate *delegate = (HackbookAppDelegate *) [[UIApplication sharedApplication] delegate]; 
[[delegate facebook] dialog:@"feed" 
     andParams:params 
     andDelegate:self]; 

enter image description here

答えて

0

[OK]を、私はついにそれを動作させるために、実際のハックを考え出し、これまでのところ、それは私だけの答えです持ってきた。誰かがより良い答えを持っているなら、投稿してください。そして、私はそれを正しいものとしてマークします。

多くのことを含むUIViewが作成されました。本質的には、私はまだあなたが上の写真で見ているものを使用しますが、私は私が気にしている底部の領域だけを見るように上部を覆います。

トップ層への最下層から、これは私のXIBファイルが持っているものです。

  1. メインのUIView - FBフィード
  2. を含むようにクラス
  3. AのUIWebViewにリンクされた容器
  4. 白い背景のUIView(または#1のUIViewの色と一致するもの - UIWebViewの応答HTMLでFacebookが使用する白いb/cを使用しています)。この白い背景は、UITextView(#5)とUIViewの「border」ビュー(#4)の後ろにあります。私はこれをやって、Facebookからの回答の上部を「ブロックする」ことができ、下部の部分だけを表示することができます(上のピックの赤いアウトラインで)。
  5. UITextビューの背後にあるUIView - 灰色の背景2pxが広く、2pxがUITextViewよりも大きく、UITextViewのすべてのエッジに1pxの境界線効果を与えます。はい、私は良い方法があると確信していますが、これはすべて大きなハックなので、私はハックしました。 :)
  6. UITextViewので、テキストをあらかじめ入力することができます。このテキストビューには、上の#1のUIViewの背景色と一致する背景色があります。私はこれをして、描画せずに灰色の境界線の効果を作り出すことができました。だから私の場合、UITextViewは白い背景を持ち、#1のメインビューもそうです。

さて、コードの中で、私は次のようです(私の場合、私は重い物を持ち上げるのほとんどを行いキットのデフォルトの動作を変更しています):

  1. はFBのアクションリンクを設定しますそしてFBは、この1つはimportant-です**私は
  2. を作成した新しいXIBファイル後ろにクラスをインスタンス化アプリはFacebookを利用して使用します(そうでない場合は、その後、別のダイアログボックスを表示)を許可されているかどうかを確認するために
  3. チェック
  4. パラメータ - コードを使用してURLを生成するFacebookのAPI(このために文字通り方法がある:NSMutableURLRequest* theRequest = [NSMutableURLRequest requestWithURL:_loadingURL];
  5. ロードXIBでのUIWebViewとビハインドクラス:[rootView.webView loadRequest:theRequest];最後に
  6. 、ビューを表示+ (NSURL*)generateURL:(NSString*)baseURL params:(NSDictionary*)params
  7. は、URLリクエストオブジェクトを作ろう!

私はこれが他の人に役立つことを願っています。本当にこのような苦痛はあってはいけません。実際には、Facebookは、これまでと同じように、APIの消費者がテキストボックスをあらかじめ入力できるようにすべきだが、それは私をしばらくトピックから離れる可能性がある別の暴動だ。

FYI、これは私の見解の最終的な外観である:

enter image description here

関連する問題