Отключить взаимодействие пользователя в представлении IOS
Я отключу и включив представление, используя следующий код....
[self.view setUserInteractionEnabled:NO];
[self.view setUserInteractionEnabled:YES];
Если мне все-таки понравится это, все его подпункты также пострадали... Все отключены, как мне сделать только для определенного вида? Возможно ли это?
Ответы
Ответ 1
Это точно то же самое, если предположить, что ваше другое представление является либо членом, либо вы можете выполнять итерацию через массив t20 > subviews, например:
MyViewController.h
UIView* otherView;
MyViewController.m
otherView.userInteractionEnabled = NO; // or YES, as you desire.
ИЛИ
for (int i = 0; i < [[self.view subviews] count]; i++)
{
UIView* view = [[self.view subviews] objectAtIndex: i];
// now either check the tag property of view or however else you know
// it the one you want, and then change the userInteractionEnabled property.
}
Ответ 2
В swift UIView
есть свойство userInteractionEnabled
, чтобы сделать его отзывчивым или нет. Чтобы сделать полный просмотр, не используйте код:
// make screen unresponsive
self.view.userInteractionEnabled = false
//make navigation bar unresponsive
self.navigationController!.view.userInteractionEnabled = false
// make screen responsive
self.view.userInteractionEnabled = true
//make navigation bar responsive
self.navigationController!.view.userInteractionEnabled = true
Ответ 3
for (UIView* view in self.view.subviews) {
if ([view isKindOfClass:[/*"which ever class u want eg UITextField "*/ class]])
[view setUserInteractionEnabled:NO];
}
надеюсь, что это поможет. счастливое кодирование:)
Ответ 4
Лучшим вариантом является использование свойства Tag
представления, а не повторение всех его подзонов. Просто установите тег на subView, который вы хотите отключить, и используйте ниже код для доступа к нему и отключите взаимодействие.
// considering 5000 is tag value set for subView
// for which we want to disable user interaction
UIView *subView = [self.view viewWithTag:5000];
[subView setUserInteractionEnabled:NO];