Как отклонить UITextView с нажатием снаружи? - PullRequest
2 голосов
/ 31 января 2012

Я немного сомневаюсь с UITextView с. Я использую, чтобы положить UITextField s, и удалить клавиатуру, нажав снаружи с верным старым:

-(void)touchesEnded: (NSSet *)touches withEvent: (UIEvent *)event {
for (UIView* view in self.view.subviews) {
    if ([view isKindOfClass:[UITextField class]])
        [view resignFirstResponder];
}
}

У меня есть этот UITextView, который установлен на моем виде (а точнее, self.myTV), и я делаю следующее

-(void)touchesEnded: (NSSet *)touches withEvent: (UIEvent *)event {
for (UIView* view in self.view.subviews) {
    if ([view isKindOfClass:[UITextView class]])
        [view resignFirstResponder];
}
}

То же, что и выше, за исключением другого класса ...

Ну, похоже, это не работает. У кого-нибудь есть предложение?

Ответы [ 2 ]

4 голосов
/ 29 сентября 2012

Простой способ уйти в отставку первого респондента для любого подпредставления, которое в настоящее время является первым респондентом:

[self.view endEditing:NO];

Или, если вы хотите заставить первого респондента уйти в отставку, не спрашивая его сначала:

[self.view endEditing:YES];
2 голосов
/ 31 января 2012

Проблема в том, что UITextView не является FirstResponder в вашем случае в соответствии с иерархией подпредставлений вашего приложения.

Я бы предложил вам классифицировать UIView, чтобы найти первого респондента как в: Эта категория в UIView, котораявызывает окно UIWindow и отслеживает первого респондента.

@implementation UIView (FindAndResignFirstResponder)
- (BOOL)findAndResignFirstResponder
{
    if (self.isFirstResponder) {
        [self resignFirstResponder];
        return YES;     
    }
    for (UIView *subView in self.subviews) {
        if ([subView findAndResignFirstResponder])
            return YES;
    }
    return NO;
}
@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...