UIWebView

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
HTTPアクセス不可(Xcode7のみ)
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
下記のような警告が出力された場合、
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.

推奨されていないということですが、App Transport Security(ATS) でこの制限を全体的に許可してあげることで、
アクセスできるようにはなるようです。Info.plistに「NSAppTransportSecurity」をDictionaryで作成し、
「NSAllowsArbitraryLoads」をBoolean型としてtrue(YES)にします。
Xcode 6の既存のプロジェクトをXcode 7にしてこのようなエラーが発生した場合は、とりあえずこの方法で対処すると動くようになるかもしれません。

参考URL(http://mushikago.com/i/?p=6150)

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
エクセルファイル表示
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

// ズーム有効化
_webView.scalesPageToFit = YES;


NSURL *url = [[NSBundle mainBundle] URLForResource:@"excelFileName"
                                     withExtension:@"xls"];
NSURLRequest *req = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:req];


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
注意点
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
// UIWebViewオブジェクトはリリース前にdelegateにnilを設定しておくこと
- (void)dealloc
{
  if (_webView) {
       if (_webView.loading) {
           [_webView stopLoading];
       }
      
       _webView.delegate = nil;
       [_webView removeFromSuperview];
       _webView = nil;
   }
}

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
デリゲート
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
// コンテンツの読み込みが開始する直前に呼ばれる
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType
ここでYESを返すとコンテンツの読み込みをUIWebViewに任せる
NOを返すとUIWebViewは読み込み処理をしない
リンククリック時に独自の処理をしたい場合にはNOを返して、ここで実行する

// コンテンツの読み込みが開始した直後
- (void)webViewDidStartLoad:(UIWebView *)webView

// 呼ばれるタイミング:コンテンツの読み込みが完了した直後
- (void)webViewDidFinishLoad:(UIWebView *)webView

// コンテンツの読み込み中にエラーが発生したタイミングで呼ばれる(複数回呼ばれることがある)
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
  if ([error code] != NSURLErrorCancelled) {
       NSString *message = [error localizedDescription];
       UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"エラー発生"
                                                       message:message
                                                      delegate:self
                                             cancelButtonTitle:nil
                                             otherButtonTitles:@"OK", nil];
       [alert show];

  }
}
最終更新:2016年03月31日 14:13