1 つの方法として、ホスト ビュー コントローラーの上で、フォーム シートの下に非表示の「シールド」を配置することが考えられます。
基本的に、背景色がクリアな空の UIView を作成します。呼び出しを行う直前に、表示中のビュー コントローラーにサブビューとして追加します。
[weakSelf presentViewController:navigationController animated:YES completion:^{}];
さて、これは必ずしもそのようなソリューションが適切であることを意味するわけではありません。つまり、フォーム シート スタイルはそのように排他的であることを意図しておらず、上記でインストールされた UIView が明確であると混乱する可能性があります。したがって、そのビューのアルファ値を減らして薄暗い画面に変え、ユーザーがその時点で対話できるのはフォーム シートだけであることを理解できるようにすることができます。
UIView *dimmingScreen = [[UIView alloc] initWithFrame:self.view.bounds];
dimmingScreen.alpha = 0.5; // play with this value to get different degrees of dimming
dimmingScreen.backgroundColor = [UIColor blackColor]; // play with different colors
[self.view addSubview:dimmingScreen];
// Now present your form sheet, as you were:
navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
[weakSelf presentViewController:navigationController animated:YES completion:^{}];
調光画面も削除できるようにしたいので、必要に応じて削除できるように、アクセスできるView Controllerプロパティにすることをお勧めします。