Надеюсь, что эта справка ...
[[yourSuperView subviews]
makeObjectsPerformSelector:@selector(setUserInteractionEnabled:)
withObject:[NSNumber numberWithBool:FALSE]];
, которая отключит userInteraction непосредственных подпредставлений представления. Затем предоставьте userInteraction к единственному желаемому представлению
yourTouchableView.setUserInteraction = TRUE;
EDIT:
Похоже, что в iOS отключение userInteraction в родительском представлении не отключает userInteraction для его дочерних элементов .. Так что приведенный выше код (я имею в виду тот, который имеет makeObjectsPerformSelector:
) будет толькоработать, чтобы отключить userInteraction непосредственных родительских подпредставлений ..
См. ответ пользователя madewulf, который рекурсивно получает все подпредставления и отключает взаимодействие пользователя всех из них.Или, если вам нужно отключить userInteraction этого представления во многих местах проекта, вы можете классифицировать UIView, чтобы добавить эту функцию. Что-то вроде этого подойдет ..
@interface UIView (UserInteractionFeatures)
-(void)setRecursiveUserInteraction:(BOOL)value;
@end
@implementation UIView(UserInteractionFeatures)
-(void)setRecursiveUserInteraction:(BOOL)value{
self.userInteractionEnabled = value;
for (UIView *view in [self subviews]) {
[view setRecursiveUserInteraction:value];
}
}
@end
Теперь вы можете позвонить
[yourSuperView setRecursiveUserInteraction:NO];
Кроме того, предложение пользователя @ lxt о добавлении невидимого представления поверх всех представлений является еще одним способом сделать это ..