1

У меня есть мнение, что представляет другой вид черезПредотвращение щелкает на мнение, что представленный другой вид через UIModalPresentationFormSheet

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

Единственная проблема заключается в том, что «основной» вид, что представил этот новый вид, есть кнопки, которые могут быть затронутым, потому что ModalPresentationFormSheet не принимает весь экран. Я хотел бы сохранить этот формат, но предотвращать клики во время представления модала. Я знаю, что могу сделать это на всех возможных пуговицах, но я уверен, что есть другой способ!

if (![weakSelf presentedViewController]) 

Спасибо!

+0

Можете ли вы не просто отключить взаимодействие пользователя с weakSelf.view при представлении другого представления, а затем включить его, как только вы упустите представленный вид? Думаю, это должно сделать трюк. –

+0

Вы на самом деле пытались коснуться этих кнопок? Когда вы представляете контроллер модального представления в виде листа формы, представление контроллера представления выглядит затемненным, и его интерфейс автоматически отключается (по крайней мере, когда я его пробовал). – rdelmar

+0

Вы правы, но по какой-то причине это не так. Фон на самом деле не потемнел, и я могу получить доступ к кнопкам сзади. Есть идеи о том, почему? Я запускаю его из блока с помощью QuickDialog. – abisson

ответ

0

Вы можете поместить «новый вид» в качестве дочернего вида другого представления, имеющего полный экран, и сделать цвет фона «родительского представления» прозрачным, чтобы вы могли видеть «основной вид».
Теперь вы не можете нажать кнопку, потому что на самом деле вы нажимаете на представление, которое является родителем, на «новом представлении»

0

Один из подходов может заключаться в том, чтобы поместить невидимый «щит» над контроллером представления хостинга, но ниже формы лист.

В принципе, создайте пустой 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:^{}]; 

Вы будете хотите уметь также удалять экран затемнения, поэтому лучше всего использовать его в качестве средства управления представлением, которое вы можете получить, чтобы удалить, когда это необходимо.

Смежные вопросы