UITextView inputView

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

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

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

Есть идеи?

8
задан vodkhang 22 August 2010 в 01:54
поделиться

1 ответ

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

-(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];


            }


}
6
ответ дан 5 December 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: