Пользовательский UIView и becomeFirstResponder



У меня есть пользовательский UIView, который реализует протокол UIKeyInput и имеет

- (BOOL) canBecomeFirstResponder{ 
    return YES;
}

Определяется в подклассе. При вызове:

[customView becomeFirstResponder];
NSLog(@"is first? %i",[customView isFirstResponder]);

При нажатии кнопки он возвращает false, Даже если canBecomeFirstResponder правильно установлен и все функции протокола UIKeyInput реализованы. Какие еще вещи могут помешать этому взгляду стать первым ответчиком? Он живет внутри scrollView и другого пользовательского представления, если это помогает.

Обновление:

Я проверено, чтобы увидеть, что текущий первый ответчик был с:

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView   *firstResponder = [keyWindow performSelector:@selector(firstResponder)];

И удивительно firstResponder было nil. Так что ничто, кажется, не задерживает события.

101   1  

1 ответ:

Вы переопределили becomeFirstResponder?

Подклассы могут переопределить этот метод для обновления состояния или выполнения некоторых такие действия, как выделение выделенного элемента.

Продолжение:

Подклассы могут переопределить этот метод для обновления состояния или выполните некоторые действия, такие как выделение выделенного элемента.

Объект ответчика становится первым ответчиком только в том случае, если текущий ответчик может отказаться от статуса первого ответчика (canResignFirstResponder) и новый ответчик может стать первым ответчиком.

Вы можете вызвать этот метод, чтобы сделать объект responder, такой как представление первый ответчик. Однако вы должны вызывать его только в том случае, если он является частью иерархии представлений. Если свойство окна вида содержит Объект UIWindow, он был установлен в иерархии представлений; если это возвращает nil, представление отделено от любой Иерархии.

Вы проверили, что соответствуете всем вышеперечисленным условиям?

    Ничего не найдено.

Добавить ответ:
Отменить.