UITextView ma możliwość wykrywania adresów URL i osadzania hiperłączy odpowiednio. Możesz włączyć tę opcję w:
myTextView.dataDetectorTypes = UIDataDetectorTypeLink;
Następnie musisz skonfigurować swoją aplikację, aby uwięzić to żądanie URL i pozwolić aplikacji go obsłużyć. Wydałem na Githubie klasę na tablicy, która to robi, co może być najłatwiejszą drogą: http://github.com/nbuggia/Browser-View-Controller--iPhone-.
Pierwszym krokiem jest zastosowanie UIApplication klasy podrzędnej, aby można było przesłonić, kto może podjąć działanie na żądanie "openUrl". Oto, co może wyglądać, że klasa jak:
#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
Następnie trzeba zaktualizować main.m określić MyApplication.h
jak będąc bonified delegat dla swojej klasy UIApplication. Otwarte main.m i zmienić linię:
int retVal = UIApplicationMain(argc, argv, nil, nil);
do tego
int retVal = UIApplicationMain(argc, argv, @"MyApplication", nil);
Wreszcie, trzeba wdrożyć [(MyAppDelegate *) OpenURL: URL] metody, aby to zrobić cokolwiek byś podobnie jak z adresem URL. Jak może otworzyć nowy kontroler widoku z UIWebView w nim i pokazać adres URL. Możesz zrobić coś takiego:
- (BOOL)openURL:(NSURL*)url
{
BrowserViewController *bvc = [[BrowserViewController alloc] initWithUrls:url];
[self.navigationController pushViewController:bvc animated:YES];
[bvc release];
return YES;
}
Mam nadzieję, że to powinno zadziałać.
Dzięki za pythonquick odpowiedzi, ale mam do czynienia z inną sytuacją w moim przypadku UITextView zawiera niektóre dane tekstowe wraz z adresem URL, w niektórych przypadkach liczba adresów URL może być większa niż jeden. – sandy
OK, więc jeśli masz więcej niż jeden URL w tekście UITextView, co stanie się z UIWebView? W jakich okolicznościach UIWebView powinien załadować adres URL? – pythonquick