我在ViewController中实现了UITextViewDelegate,
将委托设置为我的TextView
self.addressTextView.delegate=self;
现在我只能将文字设为,
[self.addressTextView setText:@"Tamil Nadu, India"];
我无法使用keybord编辑文本。在实现了shouldChangeTextInRange方法后,我只能编辑UITextView中的内容。
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
return YES;
}
我不知道为什么?如果我们实现UITextViewDelegate 是是shouldChangeTextInRange必须
答案 0 :(得分:0)
NO。它不是强制性的。你可以像这样设置文字
textView.text = @"Hello";
当您尝试在文本视图中编写内容时,将调用此方法。
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
答案 1 :(得分:0)
它在协议定义中不是强制性的,因此可能不会发生其他事情。从阅读实现所提到的委托方法修复它,很可能你的控制器的超类实现了方法,只允许你上面的文本。如果是这种情况,您实施的解决方法实际上是解决此问题的最简单方法。
答案 2 :(得分:0)
对于您的信息,编译器将指示在声明类遵循协议时必须实现的所有内容:如果缺少方法或属性,则在构建时将出现错误。