我通过执行以下操作拦截了网址:
- (BOOL)openURL:(NSURL *)url{
URLViewController * web = [[URLViewController alloc] init];
web.url = url;
UINavigationController * nav = [[UINavigationController alloc] initWithRootViewController:web];
[nav.navigationBar setTintColor:[UIColor blackColor]];
[nav setModalPresentationStyle:UIModalPresentationFormSheet];
[self.detailViewController presentModalViewController:nav animated:NO];
[web release];
[nav release];
return YES;
}
我有一个UITextView,用于检测URL,当点击URL时,它会打开ModalViewController中的链接。有关正在发生的事情的详细信息可以看here。现在的问题是,如果我想在safari中打开一个URL,它仍然可能吗?
答案 0 :(得分:4)
您应该添加一个override
标记,指示您是否要进行控制。
@interface MyApplication : UIApplication {
}
-(BOOL)openURL:(NSURL *)url withOverride:(BOOL)override;
@end
@implementation MyApplication
-(BOOL)openURL:(NSURL *)url withOverride:(BOOL)override {
if ( !override ) {
return [super openURL:url];
}
if ([self.delegate openURL:url]) {
return YES;
} else {
return [super openURL:url];
}
}
-(BOOL)openURL:(NSURL *)url{
return [self openURL:url withOverride:YES];
}
@end
所以现在你要绕过的所有电话都可以像这样发送。
[[MyApplication sharedApplication] openURL:url withOverride:NO];
原始答案
这是你应该做的。把它放在return YES;
陈述之前。
if ( [super canOpenURL:aURL] ) {
return [super openURL:aURL];
}