1

経由で別のビューを提示しているビューがあります

navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
[weakSelf presentViewController:navigationController animated:YES completion:^{}];

唯一の問題は、ModalPresentationFormSheet が全画面表示されないため、その新しいビューを提示した「メイン」ビューに、タッチできるボタンがあることです。その形式を維持したいのですが、モーダルが表示されている間はクリックしないようにします。考えられるすべてのボタンでこのチェックを実行できることはわかっていますが、別の方法があると確信しています!

    if (![weakSelf presentedViewController]) 

ありがとう!

4

2 に答える 2

0

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プロパティにすることをお勧めします。

于 2013-07-11T13:20:32.943 に答える
0

「新しいビュー」をフルスクリーンの別のビューの子ビューとして配置し、その「親ビュー」の背景色をクリアカラーにして、「メインビュー」も表示できるようにすることができます。
「新しいビュー」の親であるビューを実際にクリックしているため、ボタンをクリックすることはできません

于 2013-07-11T13:18:20.510 に答える