更改UITextView.inputView时是不是调用了textViewDidChange?
我拖动UITextView
并使用File's Owner
挂起委托。
textViewDidChange
仅使用默认键盘调用,但是当我从键盘输入文本时没有任何反应。
如何在将inputView
设置为自定义键盘时启用UITextView
委托?
这是我的代码
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 textView; -(void)setTextView:(id)textView; @end
MyKeyboard.m
-(void)setTextView:(id)textView{ _textView = textView; if ([textView isKindOfClass:[UITextView class]]) [(UITextView *)textView setInputView:self]; else if ([textView isKindOfClass:[UITextField class]]) [(UITextField *)textView setInputView:self]; }
在自定义键盘中,您可能使用方法setText:
更改setText:
文本,但此方法中所做的更改不会调用textViewDidChanged
回调。
阅读更多文档 。
textViewDidChange:
讨论文本视图调用此方法以响应用户启动的文本更改。 不响应以编程方式启动的更改而调用此方法。
因此,您应该从键盘手动调用此方法。