Как скрыть клавиатуру и одновременно выделять текст программно в UITextview? - PullRequest
0 голосов
/ 17 марта 2012

У меня следующий код в - (void) viewDidLoad

[txtView becomeFirstResponder];
[txtView setSelectedRange:NSMakeRange(0, 10)];

То есть я хочу программно выделить текст в моем UITextView.В то же время я не хочу, чтобы клавиатура появлялась.Я попытался добавить следующий код -

[txtView setEditable:NO];

или

[txtView resignFirstResponder];

Хотя клавиатура скрывается, но в любом случае выделение текста также исчезает.

Подводя итог, я хочу выделить текст программно и одновременно отключить клавиатуру.Я думаю, что это возможно, потому что, когда у меня есть [txtView setEditable: NO];Я все еще могу коснуться экрана, чтобы выбрать текст.Вопрос только в том, что я не знаю, как все это сделать программно.Кто-нибудь может мне помочь?

Ответы [ 2 ]

1 голос
/ 17 марта 2012

Из документов на -resignFirstResponder:

Подклассы могут переопределить этот метод для обновления состояния или выполнения некоторых действие, такое как выделение выделения или возврат NO, отказ от отказаться от статуса первого респондента. Если вы переопределите этот метод, вы должен вызвать супер (реализация суперкласса) в какой-то момент в вашем Код.

Вам нужно будет создать подкласс UITextView и переопределить метод -resignFirstResponder, возможно, так:

- (BOOL)resignFirstResponder {
    [self setEditable:NO];
    [self setSelectedRange:NSMakeRange(0, 10)];
    return YES;

}

Теоретически, это должно сработать, но мелочам внутри resignFirstResponder это может не понравиться.

0 голосов
/ 17 марта 2012

вы можете использовать небольшую задержку для этого. посмотри,

написать этот код в viewDidLoad

[txtView becomeFirstResponder];
[txtView setSelectedRange:NSMakeRange(0, 10)];
[self performSelector:@selector(resignKeyBoard) withObject:nil afterDelay:.5]; 

и

-(void)resignKeyBoard
{
   [txtView resignFirstResponder]; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...