アプリケーションがバックグラウンド状態に移行したときにビューの外観を変更することはお勧めできませんが、私の特定のタスクでは、このアクティビティを延期することはできず、ユーザーがホーム ボタンを押してから数秒で完了するのが本当に好きです。
それが私がしていることです: UIWebView に Web ページを読み込み、読み込みが完了したら、その Web ページの特定のスクリーンショットを作成するために contentOffset と zoomScale を変更します。アプリがアクティブなアプリケーション状態にある場合、すべて正常に動作します。
ここで、マルチタスク機能をさらに追加したいと考えました。上記の Web ページの読み込みとレンダリングのアクティビティを保護されたバックグラウンド タスク(iOS タスク完了)にカプセル化し、ユーザーがホーム ボタンを押したときでも完了するようにしました。
ページの読み込みと Web ページのスクリーンショットのレンダリング (renderInContext: メソッドを使用) がバックグラウンドで正常に動作することに気付きましたが、Webビュー(つまり、カプセル化された UIScrollView インスタンス)が setContentOffset: および setZoomScale: メッセージに反応しないようです。アプリがバックグラウンドになるとすぐに。.
コンテンツのオフセット/ズームスケールを変更するための代替手段を知っているかどうか尋ねていますか? (CALayerで直接変更しますか?)または、バックグラウンドでもコンテンツの変更を実行するようにスクロールビューを「強制」する方法。
PS: iOS シミュレーターでは、アプリケーションのバックグラウンド状態でもすべて正常に動作しますが、実際のデバイスでは動作しません。
編集:問題を示す簡単なデモ プロジェクトを作成しました。ここからダウンロードできます (zip ファイルの説明をお読みください): http://dl.dropbox.com/u/3556271/BackgroundBugDemo.zip
すべてのヒントやヒントに感謝します。ありがとう!