我正在为iPad制作一个自定义输入法,我希望能够用我的输入法替换系统键盘,并通过该输入法输入文本。
根据文档,我所需要做的就是用我的视图设置inputView属性,它将被用来代替系统键盘。我这样做了,就显示键盘而言,它是有效的,但是我如何在文本视图中输入文本呢?
假设文本视图需要采用UIKeyInput,我可以使用该协议的方法输入文本,但实际上UITextView并不采用该协议。conformsToProtocol:@protocol(UIKeyInput)返回NO,不实现deleteBackwards(实现了insertText和hasText )。除此之外,"insertText“不会导致调用textViewDidChange:委托方法。显然,我需要将UIKeyInput方法发送给其他对象(字段编辑器?)但是我怎么才能得到它呢?
有什么想法吗?
发布于 2010-08-22 10:23:11
假设你的键盘有一些按钮,为什么你不能为你的按键设置一个选择器,并在每个按钮被点击时附加到textViews文本,我已经这样做了,它工作fine...Here是真正做“写”到UITextView的方法,这个方法是由inputView定义的自定义协议的一部分,当一个按钮被按下时在委托上被调用,希望它有帮助,注意:当按下return键时我提交ret,当按回车键时提交<-当按backspace时。
-(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];
}
}https://stackoverflow.com/questions/3539520
复制相似问题