Когда вы говорите суперпредставление, я предполагаю, что вы имеете в виду супервидение анимирующего представления.Документация Apple очень неопределенна в отношении userInteractionEnabled
, но я думаю, что если вы установите для нее значение false, она отключит сенсорные события в конкретном представлении, но не в его подпредставлениях.Я хотел бы предложить вам сделать это рекурсивно.Вот пример кода, который вы можете использовать, чтобы отключить / включить ВСЕ сенсорные события в представлении:
- (void)setInteraction:(BOOL)allow onView:(UIView *)aView {
[aView setUserInteractionEnabled:allow];
for (UIView * v in [aView subviews]) {
[self setInteraction:allow onView:v];
}
}
Затем вы можете вызвать это в своем суперпредставлении [self setInteraction:NO onView:[self superview]]
.Это, конечно, также отключило бы ваши сенсорные события, поскольку вы рекурсивно отключаете их в своем суперпредставлении.Конечно, вы всегда можете снова включить сенсорные события [self setUserInteractionEnabled:NO]
.
Кроме того, в справочнике Apple по классу UIView упоминается, что некоторые компоненты пользовательского интерфейса отменяют этот метод:
Примечание : некоторые подклассы UIKit переопределяют это свойство и возвращают другое значение по умолчанию.См. Документацию для любого класса, который вы используете, чтобы определить, возвращает ли он другое значение для этого свойства.