UITextView inputView - PullRequest
       19

UITextView inputView

8 голосов
/ 22 августа 2010

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

В соответствии с документацией все, что мне нужно сделать, это установить свойство inputView в моем представлении, и оно будет использоваться вместо системной клавиатуры. Я сделал это, и это работает, что касается отображения клавиатуры, но как мне на самом деле вводить текст в текстовом представлении?

Предположительно, текстовое представление должно принимать UIKeyInput, и я могу использовать методы протокола для ввода текста, но в действительности UITextView не принимает этот протокол. conformsToProtocol:@protocol(UIKeyInput) возвращает NO, а "deleteBackwards" не реализовано (insertText и hasText реализованы. Кроме того, "insertText" не вызывает метод делегата textViewDidChange:. Очевидно, мне нужно отправить UIKeyInput метод к другому объекту (редактору полей?), но как мне его получить?

Есть идеи?

1 Ответ

6 голосов
/ 22 августа 2010

Предполагая, что на вашей клавиатуре есть несколько кнопок, почему вы не можете просто установить селектор для своих клавиш и добавлять текст textViews при нажатии каждой кнопки, я сделал это, и он работает нормально ... Вот метод, который на самом делевыполняет «запись» в UITextView, этот метод является частью пользовательского протокола, определенного inputView и вызывается на делегате всякий раз, когда нажимается кнопка, надеюсь, это поможет, обратите внимание: я отправляю ret при нажатии клавиши возврата и <- при нажатии Backspace. </p>

-(void)userDidInputString:(NSString*)s
{
    NSRange r=padView.textView.selectedRange; 
    if([s isEqualToString:@"ret"])
        s=@"\n";
    if([s isEqualToString:@"<-"])
    {
        NSString *text=padView.textView.text;   
        if(r.location>0)
        {
            r.location=r.location-1;
            r.length+=1;
        }
                [padView.textView setScrollEnabled:YES];
        padView.textView.text=[text stringByReplacingCharactersInRange:r   withString:@""];
        [padView.textView setScrollEnabled:NO];
        r.length=0;
        [padView.textView setSelectedRange:r];
        [note setNoteText:padView.textView.text];

    }
    else {
        NSString *text=padView.textView.text;   

        [padView.textView setScrollEnabled:YES];
        padView.textView.text=[text stringByReplacingCharactersInRange:r withString:s];
                [padView.textView setScrollEnabled:NO];
        r.location=r.location+[s length];
        //whenever you modify the text by setting the UITextViews text property it resets the cursor to the end of the text view, we have this line below to go back to where the user left off
        [padView.textView setSelectedRange:r];


            }


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...