3

据我了解,该标准UIWebView能够显示许多扩展名的本地文件。由于我需要在我的应用程序中显示格式化文本,我认为这种方法是可行的方法。

因此,我创建了一个名为 test.rtf 的富文本文件,我目前正尝试在我的 web 视图中显示它。但是,我没有成功。我只看到一个空白屏幕,而不是我在 rtf 文件中键入的文本。

有人可以查看我的代码并指出我在实现中出错的地方吗?

头文件:

#import <UIKit/UIKit.h>
@interface MainViewController : UIViewController <UIWebViewDelegate> {
UIWebView * webView;
}
@end

主文件:

#import "MainViewController.h"
@interface MainViewController ()
@end
@implementation MainViewController

- (id)init
{
self = [super init];
if (self) {
    // Customization at initialization
    self.view.backgroundColor = [UIColor clearColor];

    //Adding a webview to display richtext documents
    int webHeight = self.view.bounds.size.height;
    webView = [[UIWebView alloc] initWithFrame:CGRectMake(0.0, 150.0, 320.0, webHeight-150.0)];
    webView.dataDetectorTypes = NO;
    webView.scrollView.bounces = NO;
    webView.delegate = self;
    [webView setBackgroundColor:[UIColor clearColor]];
    [webView setOpaque: NO];
    [self.view addSubview:webView];
    }
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.

// Accessing richtext file
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"rtf"];
NSURL *url = [NSURL fileURLWithPath:filePath];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
if (request) {
    // Additional configuration
}

//Adding the content of the webiew
[webView loadRequest:request];
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
  • (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSLog(@"委托调用"); // 在这里做任何你想做的事情 return YES; } @结尾
4

1 回答 1

3

您应该设置您UIWebView的委托并返回YESUIWebViewDelegate 协议参考说:

webView:shouldStartLoadWithRequest:navigationType:

在 Web 视图开始加载框架之前发送。

因此,您应该YES第一次返回以加载您的 test.rtf 文件。

正如您更新了您的问题。你需要设置

webView.delegate = self;
//webView.delegate = appDelegate;    // not this line
于 2012-11-18T14:10:40.077 回答