自分専用ブラウザ01

http://d.hatena.ne.jp/moto_maka/20081127/1227729444
にしたがって、アプリ内でブラウザを表示し、戻る、進む等のブラウザの基本機能も実装します。

ウェブページをアプリ内で単純に表示するまで

  • SingleView Applicationで新規プロジェクト作成
  • WebViewを貼り付けて、AssistantEditorで関連付け
  • viewDidLoadに初期表示ページを設定
- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
    [webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://d.hatena.ne.jp/moto_maka/"]]];
}
  • ビルドして表示されることを確認
    • ピンチ、スクロール、ページ遷移など基本的な動作が行えることの確認

※もとまかさんのページにあった読み込み状態インジケータの表示については調査中

    • Xcode4.4ではシミュレータで確認できるのか
    • 実機でしか確認できないのか
    • コードはXcode4.4ではどう書けばよいか(結びつけるのは何をどうすればいいか)
      • もとまかさんのページにあったコードを書いてとりあえずビルドは通っている状態。

戻る、進む、中止、更新ボタンの追加

  • WebView上にボタンを4つ配置
  • Sceneツリー(Storyboardの左に表示されるビューごとの部品一覧)からWebViewを右クリック
  • 「goBack」、「goForward」、「reload」、「stopLoading」と各ボタンをドラッグアンドドロップで結びつける
  • ビルドして実行

問題点

読込状態を示すクルクル回るアレの表示方法が不明。

もとまかさんいわく、(旧バージョンのXcodeでは)デリゲートをファイルズオーナーに結びつけるのが、ステータスバーの読み込み状態インジケータの表示に必要だということです。

先ほどIBでUIWebViewのdelegateをFile's Ownerにアウトレットしましたが、
あの操作はこれらのdelegateメソッドを認識させるために必要な作業になります。
ちなみに、delegateをアウトレットしなくてもエラーにはなりませんが、
「webViewDidStartLoad」と「webViewDidFinishLoad」は当然認識できないので
ActivityIndicatorを適切なタイミングで使えない、ということになります。

ファイルズオーナーを前回のじゃんけんアプリのときにも使った記憶がないので、どうやってStoryboardと結びつければいいかわかりません。
とりあえず保留にして先に進めます。


★追記
インジケータは実機でないと確認できないという情報がもとまかさんのページにありました。
ただ、Xcode4.4ではシミュレータでも確認できるように改善されているのかまでは未確認です。
下記コードで表示状態の切替ができるようです。

[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

ただ、いずれにせよFilesOwnerとの結びつけの問題が解決しないことにはどうしようもないです。。。