我拖动UITextView
并用File's Owner
挂钩代表。
仅使用默认键盘调用textViewDidChange
,但在键盘输入文本时不会发生任何事情。
如何在将UITextView
设置为自定义键盘时启用inputView
的委托?
这是我的代码
ViewController.m
-(void)viewDidLoad{
self.myKeyboard = [[[NSBundle mainBundle] loadNibNamed:@"MyKeyboard" owner:nil options:nil] objectAtIndex:0];
[self.myKeyboard setTextView:self.textView];
}
#pragma mark TestViewDelegate
- (void)textViewDidChange:(UITextView *)textView{
NSLog(@"TextDidChange: %@",textView.text);
}
MyKeyboard.h
@interface MyKeyboard : UIView
@property (weak,nonatomic) id<UITextInput> textView;
-(void)setTextView:(id<UITextInput>)textView;
@end
MyKeyboard.m
-(void)setTextView:(id<UITextInput>)textView{
_textView = textView;
if ([textView isKindOfClass:[UITextView class]])
[(UITextView *)textView setInputView:self];
else if ([textView isKindOfClass:[UITextField class]])
[(UITextField *)textView setInputView:self];
}
答案 0 :(得分:8)
在自定义键盘中,您可能使用方法textView
更改setText:
内的文字,但此方法所做的更改不会调用textViewDidChanged
回调。
阅读documentation中的更多内容。
<强> textViewDidChange:强>
讨论文本视图调用此方法以响应用户启动的更改 到文本。 不会以编程方式调用此方法 启动了变更。
因此,您应该从键盘手动调用此方法。