在我的iPhone应用程序中,UITextView包含一个URL。我想在UIWebView中打开此URL而不是将其打开到safari中? 我的UITextView包含一些数据和URL。在某些情况下,没有。 URL可以不止一个。
由于 沙
答案 0 :(得分:10)
您可以按照以下步骤操作:
UITextView
中的以下属性。
或者为动态拍摄的textview写下这些。
textview.delegate=self;
textview.selectable=YES;
textView.dataDetectorTypes = UIDataDetectorTypeLink;
delegate
方法:-(BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange { NSLog(@"URL: %@", URL); //You can do anything with the URL here (like open in other web view). return NO; }
我认为你正在寻找它。
答案 1 :(得分:9)
UITextView能够检测URL并相应地嵌入超链接。您可以在以下位置启用该选项:
myTextView.dataDetectorTypes = UIDataDetectorTypeLink;
然后,您需要配置应用程序以捕获此URL请求,并让您的应用程序处理它。我在github上发布了一个样板类来执行此操作,这可能是最简单的路径:http://github.com/nbuggia/Browser-View-Controller--iPhone-。
第一步是对UIApplication进行子类化,以便覆盖谁可以对'openUrl'请求采取行动。这是该课程的样子:
#import <UIKit/UIKit.h>
#import "MyAppDelegate.h"
@interface MyApplication : UIApplication
-(BOOL)openURL:(NSURL *)url;
@end
@implementation MyApplication
-(BOOL)openURL:(NSURL *)url
{
BOOL couldWeOpenUrl = NO;
NSString* scheme = [url.scheme lowercaseString];
if([scheme compare:@"http"] == NSOrderedSame
|| [scheme compare:@"https"] == NSOrderedSame)
{
// TODO - Update the cast below with the name of your AppDelegate
couldWeOpenUrl = [(MyAppDelegate*)self.delegate openURL:url];
}
if(!couldWeOpenUrl)
{
return [super openURL:url];
}
else
{
return YES;
}
}
@end
接下来,您需要更新main.m以指定MyApplication.h
作为UIApplication类的bonified委托。打开main.m并更改此行:
int retVal = UIApplicationMain(argc, argv, nil, nil);
到这个
int retVal = UIApplicationMain(argc, argv, @"MyApplication", nil);
最后,您需要实现[(MyAppDelegate *)openURL:url]方法,让它按照您希望的方式执行URL。就像打开一个带有UIWebView的新视图控制器一样,并显示URL。你可以这样做:
- (BOOL)openURL:(NSURL*)url
{
BrowserViewController *bvc = [[BrowserViewController alloc] initWithUrls:url];
[self.navigationController pushViewController:bvc animated:YES];
[bvc release];
return YES;
}
希望这应该适合你。
答案 2 :(得分:3)
假设您有以下实例,这些实例也会添加到您的UIView中:
UITextView *textView;
UIWebView *webView;
和textView包含URL字符串,您可以将URL的内容加载到webView中,如下所示:
NSURL *url = [NSURL URLWithString:textView.text];
NSURLRequest *req = [NSURLRequest requestWithURL:url];
[webView loadRequest:req];