2

我有一个文本视图并包含一些链接。当我点击链接时,默认的 iOS 浏览器会打开。但我想为此目的打开我的自定义 Web 视图。我该怎么做?

4

5 回答 5

0

单击按钮后,您可以使用UIWebView调用 UIViewController ,然后您可以使用loadRequest: method加载您的 URL。

于 2012-05-23T12:55:17.243 回答
0

我不知道是否有可能为覆盖默认处理程序的链接注册一个处理程序,但如果没有,那么您更改链接是否容易?如果是这样,您可以从以下链接启动您的应用程序:

myappurlscheme://

如果原始链接中有信息,您需要将其传递给您的应用,例如

myappurlscheme://http.theoriginalurl.com/somestuff

然后在您的应用程序中,您可以提取 http.theoriginalurl.com/somestuff 并将其传递给 UIWebVIew。

这种技术通常用于启动应用程序,但由于您的应用程序已经在运行,它仍然可以工作并导致对您的应用程序委托的函数调用。

http://mobiledevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html

于 2012-05-23T15:51:21.480 回答
0

使用NSURLProtocol- 从中​​派生您自己的类并实现相关方法(查看文档,它应该是不言自明的,如果没有回到这里有任何问题)。

您将在您的应用委托中注册您的课程didFinishLaunchingWithOptions

在文本视图中单击链接时,您将有机会拦截 url 并阻止浏览器启动。一旦你拦截了它,你就可以对它做你想做的事情——比如在一个UIWebView例子中加载它。

于 2012-05-26T02:52:29.087 回答
0

我实际上已经按照奥斯卡的建议做了。问题是,您实际上只能为每个按钮分配一个“链接”。我实际上想更多地了解您的问题。你真的有大量的文本,在多行 UITextView 中显示多个 HTML 链接吗?您放入 UITextView 的文本是静态的(不变的)还是动态的(在哪里发生变化的)?

无论哪种情况,我都建议您在应用程序中将带有链接的文本实现为本地 HTML 文件,并在您自己的 UIWebView 中打开它们。在您自己的 UIWebView 中点击的任何链接都将打开并保留在您的 WebView 中,而不是退出标准浏览器。这是我在多个场合都做过的事情,因为我使用本地存储的 HTML 来进行游戏指导等......在应用程序中使用。有一种方法可以使 HTML 页面具有透明背景,以允许后面的其他视图(如背景等)显示文本。稍后我将尝试对其进行编辑,为您提供必须添加到 HTML 文件中以允许透明 HTML 支持的行(如果这是您需要的,因为它会使它看起来/感觉更像默认的 UITextView)。

这也是 Apple 在其 UITextView 类参考中给出的建议:http: //developer.apple.com/library/ios/#documentation/uikit/reference/UITextView_Class/Reference/UITextView.html

于 2012-05-23T14:46:52.837 回答
0

有一个 UITextViewDelegate 方法 - textView:shouldInteractWithURL:inRange: 返回一个 Bool 变量。

因此,只需在此方法中创建您的自定义 UIWebView 并在此 webview 中加载 URL 并返回 No 以防止默认浏览器打开该链接。

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange{ NSLog(@"%@",URL); UIStoryboard *storyboard = self.storyboard; SDWebViewController *webViewController = [storyboard instantiateViewControllerWithIdentifier:@"WebViewController"]; webViewController.strURL = [NSString stringWithFormat:@"%@",[URL absoluteString]]; [self.navigationController pushViewController:webViewController animated:YES]; return NO; }

然后在 SDWebViewController 类对象中加载 WebView 中的 URL。

于 2015-12-10T06:33:08.833 回答