11

質問

iOSのスクロールビュー内でWebビューを回避する技術的な理由を知っている人はいますか(Webビュー自体の内部でのスクロールを無効にしてもよいと仮定します)。

UIWebViewのAppleドキュメントを見ると、次のように記載されています。

重要: UIScrollViewオブジェクトにUIWebViewまたはUITableViewオブジェクトを埋め込まないでください。これを行うと、2つのオブジェクトのタッチイベントが混同され、誤って処理される可能性があるため、予期しない動作が発生する可能性があります。

私の教育を受けた推測

内側と外側のスクロールビューの間でタッチが混同される可能性があるため、スクロールビューを別のスクロールビュー内に配置しないように警告しているようです。

UIWebViewしかし、スクロールビューの内側に配置したいという非常に正当な理由があります。Webビューは、単なるスクロールビューではありません。UIWebView幅広いWebコンテンツを簡単に表示できます。

それ自体の中でスクロールを許可する必要がなく、次のUIWebViewいずれかでスクロールをオフにする場合:

webView.userInteractionEnabled = NO;

また

webView.scrollView.scrollEnabled = NO;

では、このデザインに本当に問題はありますか?

これは部分的に元のインターフェースのアーティファクトであり、埋め込まれたものへの直接(および文書化された)アクセスUIWebViewを提供しなかったのではないかと思います(スクロールを簡単に無効にできるようにするため)。たぶん、Appleドキュメントのこのステートメントはその遺産ですか?UIScrollView

プロジェクトコンテキスト

私は、スクロールビュー内でいくつかのWebビューを使用して、それらの間を水平方向にスクロールできるアプリ(他の誰かが作成したもの)を管理しているので、質問します。Webコンテンツは固定されている(変更できない)と見なす必要があり、HTMLページごとに1ページのコンテンツしか表示されません。ユーザーはページ間をスクロールできる必要があるため、そのためUIWebViewsにa内の複数UIScrollViewが選択されました。これまでのところ、正常に動作している可能性があります。

ただし、ページには全画面画像が表示されるため、スクロールのパフォーマンスが問題になります。しかし、私は、スクロールビュー内のWebビューの基本的なネスト(Appleが警告している)が本当に問題の一部であるかどうかを判断しようとしています。

4

2 に答える 2

20

UIWebViewsあなたが説明した場合、Appleが内部に入れることをお勧めしない唯一の理由はUIScrollViews、スクロールが2つのスクロールビュー間で混同されるリスクがあるためです。

彼らがこれを書いたのは、 がUIWebView継承され、UIViewではなくUIScrollView、したがってスクロールビュー自体ではない (しかし、スクロールビューを埋め込んでいる) という事実によって、HTML に応じて Web コンテンツがスクロール可能であることが未経験のユーザーには明らかではない可能性があるためだと思います。もしあれば、コンテナのスクロールビューを台無しにするでしょう。したがって、これはおそらくこのケースの単なるリマインダーです。

しかし、スクロールを無効にすると、これがうまくいかない理由がわかりません。

とにかく、スクロールビューでのユーザー操作を無効にすることは、スクロールを無効にすることと同じではないことに注意してください。HTML コンテンツにリンクまたはその他のクリック可能/タップ可能なコンテンツが含まれている場合、ユーザー操作を無効にするとそれらも無効になります。スクロールのみを無効にして、単純なタップのようなユーザー操作を維持するには、webview.scrollView.scrollEnabled = NO代わりに を使用しwebview.scrollView.userInteractionEnabled = NOます。

于 2012-10-13T01:12:10.917 に答える
1

これについて、少なくとも 1 つの別の理由に遭遇しました。

UIWebViewは、スクロール中に JavaScript を実行していないように見えます。Web ビューのスクロール中に JavaScript でアニメーション化されたコンテンツがフリーズし、スクロールが終了するとすぐに中断したところから続行します。

おそらく、これはパフォーマンスの最適化です。Web ビューを含むスクロール ビューをスクロールすると、Web ビューは移動していることを認識しないため、JavaScript を一時停止しません。

もちろん、問題は、これがパフォーマンスに重大な影響を与えるかどうか、およびどの iPad モデルであるかということです。

于 2013-02-28T09:55:40.927 に答える