0

UIActivityにカスタム ボタンを追加するサブクラスを作成しようとしていますUIActivityViewController。このカスタム ボタンで、アプリケーションを終了せずにリンクを開くことができるようにしたいと考えています。UIWebviewサファリで開くことができるソリューションを多数見つけましたが、アプリ内で開くことができるかどうかわかりません(おそらくモーダル ビューですか?)。

デリゲート メソッドで `UIWebview を作成してクリックを処理しようとしましたが、これはビュー コントローラーではないため、ビュー階層に追加できません。

- (void)prepareWithActivityItems:(NSArray *)activityItems{
    UIWebView *webView=[[UIWebView alloc] initWithFrame:CGRectMake(0,0,320,480)];
    NSURLRequest *urlRequest;
    NSURL *urlforWebView;
    urlforWebView=[NSURL URLWithString:@"http://www.google.com"];
    urlRequest=[NSURLRequest requestWithURL:urlforWebView];
    [webView loadRequest:urlRequest];
}
4

3 に答える 3

1

// 例: 最初にウェブビューをメインビューに追加する必要があります

UIWebView *webView = [[UIWebView alloc] init];
[webView setFrame:CGRectMake(0, 0, 320, 460)];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com"]]];
[[self view] addSubview:webView];
于 2013-08-09T13:09:30.703 に答える
0

これを試して

ここでの UIPlainViewController は、WebView が追加された単なるカスタム UIViewController です。派生した UIActivity クラスに (UIViewController *)activityViewController を次のように実装します。

(UIViewController *)activityViewController {

NSString *page = @"some url";

NSURL *url = [[NSURL alloc] initWithString:page];

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];

[((UIPlainViewController*)self.plainViewController).webView loadRequest:request];

return self.plainViewController;

}

于 2013-10-27T00:08:10.587 に答える
0

このプロジェクトはあなたがやりたいことを実装していると思いますが、サファリで開きます: https://github.com/davbeck/TUSafariActivity出発点としては良いです。

アクティビティ自体は、コントローラー ビュー階層に接続されていないため、ビューを開くことができません。ユーザーがあなたのアクティビティを選択したことをホストコントローラーに伝える何らかの方法が必要です。これを行う最も簡単な方法は、通知を使用することです。

  1. ビュー コントローラは、指定された識別子で通知を登録します。
  2. アクティビティが実行されると、この通知が投稿されます。
  3. 通知はハンドラー メソッドのアクティビティによって処理され、Web ビューが開きます。
  4. コントローラがナビゲーション スタックから削除される場合は、通知センターからビュー コントローラを登録解除することを忘れないでください。

このSend and receive messages through NSNotificationCenter in Objective-C? のように、通知を使用するための多くの例があります。

于 2013-08-09T13:39:57.817 に答える