Ios 在更改UITextView.inputView时未调用textViewDidChange?
我拖动一个Ios 在更改UITextView.inputView时未调用textViewDidChange?,ios,objective-c,uitextview,uitextviewdelegate,Ios,Objective C,Uitextview,Uitextviewdelegate,我拖动一个UITextView并将代理与文件的所有者连接起来 仅使用默认键盘调用textViewDidChange,但从我的键盘输入文本时不会发生任何情况 如何在将inputView设置为自定义键盘时启用UITextView的委托 这是我的密码 ViewController.m -(void)viewDidLoad{ self.myKeyboard = [[[NSBundle mainBundle] loadNibNamed:@"MyKeyboard" owner:nil options
UITextView
并将代理与文件的所有者连接起来
仅使用默认键盘调用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);
}
我的键盘
@interface MyKeyboard : UIView
@property (weak,nonatomic) id<UITextInput> textView;
-(void)setTextView:(id<UITextInput>)textView;
@end
@界面MyKeyboard:UIView
@属性(弱,非原子)id textView;
-(void)setTextView:(id)textView;
@结束
我的键盘
-(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];
}
-(void)setTextView:(id)textView{
_textView=textView;
if([textView IsKindof类:[UITextView类]])
[(UITextView*)textView设置输入视图:self];
else if([textView IsKindof类:[UITextField类]])
[(UITextField*)textView设置输入视图:self];
}
在自定义键盘中,您可能会使用方法setText:
更改textView
中的文本,但此方法中所做的更改不会调用textViewDidChanged
回调。
阅读更多信息
textViewDidChange:
讨论
文本视图调用此方法以响应用户发起的更改
对文本进行修改此方法不会以编程方式调用以响应
已启动更改。
因此,您应该从键盘手动调用此方法。我在任何地方都没有看到委托集。您是否运行了textView.delegate=self
?