0

我正在尝试创建一个子类UIActivity以将自定义按钮添加到UIActivityViewController. 我希望这个自定义按钮能够在不离开应用程序的情况下打开链接。我找到了许多允许在 safari 中打开东西的解决方案,但我不知道是否可以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

// 例子:需要先将你的 webview 添加到你的 mainview

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

我相信这个项目实现了你想做的,但它在 safari 中打开:https ://github.com/davbeck/TUSafariActivity很好的起点。

活动本身无法打开视图,因为它没有连接到控制器视图层次结构。您需要某种方式告诉主机控制器用户选择了您的活动。最简单的方法是通过通知:

  1. 视图控制器注册具有给定标识符的通知。
  2. 如果执行,该活动会发布此通知。
  3. 通知由处理程序方法中的活动处理,并打开 Web 视图。
  4. 如果控制器正在从导航堆栈中删除,请不要忘记从通知中心取消注册视图控制器。

有很多使用通知的例子,比如在 Objective-C 中通过 NSNotificationCenter 发送和接收消息?

于 2013-08-09T13:39:57.817 回答
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 回答