UITextView có khả năng phát hiện URL và siêu liên kết nhúng cho phù hợp. Bạn có thể bật tùy chọn đó ở:
myTextView.dataDetectorTypes = UIDataDetectorTypeLink;
Sau đó, bạn cần định cấu hình ứng dụng của mình để bẫy yêu cầu URL này và để ứng dụng của bạn xử lý yêu cầu đó. Tôi đã xuất bản một lớp soạn sẵn trên github thực hiện điều này, có thể là tuyến đường dễ nhất: http://github.com/nbuggia/Browser-View-Controller--iPhone-.
Bước đầu tiên là phân loại UIApplication phụ để bạn có thể ghi đè người sẽ thực hiện hành động theo yêu cầu 'openUrl'. Đây là những gì lớp mà có thể trông giống như:
#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
Tiếp theo, bạn cần cập nhật main.m để xác định MyApplication.h
như là các đại biểu bonified cho lớp UIApplication của bạn. Mở main.m và thay đổi dòng này:
int retVal = UIApplicationMain(argc, argv, nil, nil);
này
int retVal = UIApplicationMain(argc, argv, @"MyApplication", nil);
Cuối cùng, bạn cần phải thực hiện các [(MyAppDelegate *) openURL: url] phương pháp để có nó làm những gì mà bạn sẽ giống như với URL. Giống như có thể mở một bộ điều khiển xem mới với một UIWebView trong nó, và hiển thị URL. Bạn có thể làm một cái gì đó như thế này:
- (BOOL)openURL:(NSURL*)url
{
BrowserViewController *bvc = [[BrowserViewController alloc] initWithUrls:url];
[self.navigationController pushViewController:bvc animated:YES];
[bvc release];
return YES;
}
Hy vọng điều đó sẽ phù hợp với bạn.
Nguồn
2011-10-29 00:39:50
Cảm ơn phản ứng pythonquick nhưng tôi đang đối mặt với một tình huống khác trong trường hợp của tôi UITextView có chứa một số dữ liệu văn bản cùng với một URL trong một số trường hợp số lượng URL có thể nhiều hơn một. – sandy
OK, vì vậy nếu bạn có nhiều hơn một URL trong văn bản của UITextView, điều gì sẽ xảy ra với UIWebView? Trong trường hợp nào thì UIWebView sẽ tải URL nào? – pythonquick