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(@ "delegate called"); //ここでやりたいことは何でもしますreturnYES; } @終わり
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 に答える