我正在尝试覆盖我的应用程序的 openURL 方法来拦截 UITextView 中的链接点击。UITextView 位于基于导航的 DetailViewController 中,当用户单击链接时,我想将 Web 视图推送到导航堆栈上。
我通过将截获的 url 记录到控制台来验证我的方法正在被调用,但导航控制器根本没有推送我的 WebViewController。我在界面生成器中创建了一个按钮,并将其添加到与 textview 相同的视图中,只是为了验证 WebView 是否被推送。该按钮仅用于测试目的。
问题似乎是,当我从 AppDelegate 调用该方法时,navigationController pushViewController 代码没有被触发,即使 NSLog 显示我得到了有效的截获 url。
感谢您提供的任何帮助!代码:
AppDelegate.m 内部:
- (BOOL)openURL:(NSURL *)url
{
DetailViewController *webView = [[DetailViewController alloc]init];
webView.url = url;
[webView push];
return YES;
}
DetailViewController.h:
#import <UIKit/UIKit.h>
@interface DetailViewController : UIViewController <UIGestureRecognizerDelegate>
@property (nonatomic, strong) NSURL *url;
- (void)push;
@end
DetailViewController.m:
- (void)push
{
WebViewController *webView = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:[NSBundle mainBundle]];
webView.url = self.url;
NSLog(@"%@",self.url);
[self.navigationController pushViewController:webView animated:YES];
}