isChangeTextInRange在UITextViewDelegate中是强制性的吗?

时间:2013-09-10 13:36:35

标签: ios uitextview uitextviewdelegate

我在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必须

3 个答案:

答案 0 :(得分:0)

NO。它不是强制性的。你可以像这样设置文字

textView.text = @"Hello";

当您尝试在文本视图中编写内容时,将调用此方法。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

答案 1 :(得分:0)

它在协议定义中不是强制性的,因此可能不会发生其他事情。从阅读实现所提到的委托方法修复它,很可能你的控制器的超类实现了方法,只允许你上面的文本。如果是这种情况,您实施的解决方法实际上是解决此问题的最简单方法。

答案 2 :(得分:0)

对于您的信息,编译器将指示在声明类遵循协议时必须实现的所有内容:如果缺少方法或属性,则在构建时将出现错误。