2012-04-20 7 views
1

У меня есть 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.

+0

Вы проверили, есть ли 'NSLog (@"% @ ", self.superView"), 'возвращает желаемый результат? Также, что вы подразумеваете под' [super статьFirstResponder'? Не работает? "_How_ is он не работает? –

+0

Да, и это так. Это не работает, как в: если кода не было, точно такое же поведение будет отображаться. – prince

+0

Является ли ваш супервизор тем же самым объектом, что и субвью, на который вы ссылаетесь? в диспетчере представлений, который управляет супервидом, вы используете '- (BOOL) canBecomeFirstResponder { return YES; }'? –

ответ

2

Пробовал этот

[self.superview becomeFirstResponder];?

+0

По-прежнему такое же поведение:/ – prince

+0

Теперь я нашел проблему с моей логикой, см. Обновленный исходный вопрос. – prince

+0

@JamesPrince, независимо от проблемы в вашей логике, '[super resignFirstResponder]' не так. Вы сбиваете с толку суперкласс и супер-взгляд, которые совершенно разные. –

Смежные вопросы