У меня есть subview, и часть представления прозрачна, поэтому для пользователя, если они должны были касаться в этом прозрачном пространстве, то все, что видно (но также и под ним), должно быть интерактивным.super beFirstResponder не работает
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
CGPoint pt = [[touches anyObject] locationInView:self];
if (CGRectContainsPoint(tableViewUse.frame, pt)){
[self becomeFirstResponder];
}else {
[super becomeFirstResponder];
}
}
У меня есть код выше в моем классе подвид, но проблема в том, что [супер becomeFirstResponder] вызов не работает. Теперь очевидным решением является вызов [self resignFirstResponder] в классе моего супервизора; однако я планирую использовать многие экземпляры этого класса в своем коде, поэтому мне пришлось бы найти прикосновение и сравнить его с фреймом каждого из моих экземпляров и т. д. Таким образом, элегантное решение состоит в том, чтобы контролировать все, что находится в подзаголовке.
Благодарим за помощь!
P.s только что заметил проблему, которая изменит мой вопрос. Если бы я должен был сделать супервизор первым ответчиком, тогда в этом супервизоре будет вызываться любой метод touchhesBegan, и там нужно будет управлять прикосновением. eeeeeek.
Вы проверили, есть ли 'NSLog (@"% @ ", self.superView"), 'возвращает желаемый результат? Также, что вы подразумеваете под' [super статьFirstResponder'? Не работает? "_How_ is он не работает? –
Да, и это так. Это не работает, как в: если кода не было, точно такое же поведение будет отображаться. – prince
Является ли ваш супервизор тем же самым объектом, что и субвью, на который вы ссылаетесь? в диспетчере представлений, который управляет супервидом, вы используете '- (BOOL) canBecomeFirstResponder { return YES; }'? –