本文へ移動
WebView Native UIdocs

カスタムオーバーレイの一時停止と再開

ネイティブUIの上にカスタムモーダルやdivを表示する前にpause()を呼び出し、閉じたらresume()を呼び出します。Ionicオーバーレイには、自動のIonic連携を使ってください。同じ調整を共有しますが、オーバーレイの背後にあるサーフェスだけを覆います。

プラグイン作者向け:Engineの関数を再エクスポートする

export { pause, resume } from '@webview-native-ui/engine';

これらの関数は、同じドキュメント内のEngine対応プラグインやバンドル間でひとつの一時停止カウントを共有します。ラッパーやネイティブプラグインのメソッドは不要です。

アプリ作者向け:一時停止と再開を必ず対にする

import { pause, resume } from 'your-plugin';

pause();
try {
  await showCustomModal();
} finally {
  resume();
}

showCustomModal()はモーダルを閉じた時点で解決する必要があります。イベント駆動のモーダルでは、閉じたとき、キャンセル時、失敗時にresume()を呼び出します。プラグインが複数あっても、オーバーレイごとに1組を使ってください。入れ子のオーバーレイは、それぞれ独自の組が必要です。

一時停止すると、表示中のネイティブサーフェスを準備済みのWeb画像または通常のWebフォールバックに置き換えます。非表示のサーフェスは非表示のままです。最後のresume()は各プラグインの表示意図と残っているIonicオーバーレイの被覆を維持しながら、要求を解除します。

カウンターは呼び出し元を追跡せず、個々の呼び出しの対も管理しません。一時停止中に余分なresume()を呼ぶと、別のオーバーレイの要求を解除する可能性があります。何も起こらないのは、カウントがゼロのときのresume()だけです。各所有者は、自分が要求した一時停止ごとに、必ず一度だけ解除する必要があります。

どちらの関数も、ネイティブの確認応答や描画を待たず、直ちに戻ります。pause()から戻っても、ネイティブUIがすでにWebオーバーレイの背後へ移ったとは限りません。切り替えが完了するまでは前面に残る場合があります。最後のresume()はネイティブ復元を2回目のアニメーションフレームまで延期し、オーバーレイ削除の描画機会を確保します。ただし、コンポジターの処理完了を保証するものではありません。オーバーレイを削除した後、または終了アニメーションの完了後に呼び出してください。新たなpause()は保留中の復元をキャンセルします。そのため、処理をブロックするwindow.alert()の直前にpause()を呼んでも、切り替えの完了は保証されません。これらの関数はカスタムオーバーレイを自動検出しません。