Взаимодействие с пользователем отключено для просмотра, но включено для подпредставлений (кнопки UIB) - PullRequest
4 голосов
/ 17 января 2011

У меня есть представление, которое содержит несколько кнопок UIB, которые перекрывают UIScrollView.Я хочу предотвратить взаимодействие с пользователем в представлении наложения, но не на кнопках UIB, которые содержатся в этом представлении.

Причина, по которой я группирую эти представления в одно представление, заключается в том, что я могу применить альфа-изменение квсе кнопки в представлении, просто изменив одно свойство.Я только что заметил IBOutletCollection в IOS 4.0, но мне нужно также нацеливаться на IOS 3.0.

Есть ли более простой способ добиться этого, чем переопределение следующего метода UIView?

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;

Ответы [ 3 ]

3 голосов
/ 20 января 2011

К сожалению, если вы отключите взаимодействие пользователя с представлением, то взаимодействие пользователя со всеми подпредставлениями также будет отключено. Хотя это и не идеально, вам просто нужно создать IBOutlets для каждой из кнопок и настроить их соответствующим образом. Чтобы избежать необходимости писать много дополнительного кода в будущем, в вашем viewDidLoad вы можете создать NSArray и бросить в него каждую из кнопок. Затем каждый раз, когда вы захотите изменить один из атрибутов на всех этих кнопках, вы можете просто зациклить массив и изменить их. Таким образом, если вы добавите еще одну кнопку в группу, вам нужно только обновить массив, а остальные изменения будут автоматически распространены.

1 голос
/ 21 августа 2015

Пожалуйста, посмотрите на этот ответ: https://stackoverflow.com/a/13414182/2082569

В соответствии с этим вам необходимо переопределить этот метод в пользовательском UIView:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    UIView *subview = [super hitTest:point withEvent:event];
    return subview == self.button ? subview : nil;
}
0 голосов
/ 09 апреля 2015

отключить только представление прокрутки, используя scrollView.scrollEnabled = FALSE;когда вы хотите, чтобы пользователь разрешил использование кнопки.Включите снова, если вы хотите, чтобы пользователь прокручивал представление, используя scrollView.scrollEnabled = TRUE;

Примечание: вам не нужно отключать взаимодействие с пользователем в режиме прокрутки.

...