实现textViewDidChange:

时间:2014-08-08 18:44:04

标签: ios objective-c textview

所以,我有一个非常简单的带有objective-c的列表项目,列表中的每个项目都应该有一个标题和一个描述。单击其中一个项目时,将显示该项目的详细视图。导航栏上的标题是项目的标题,视图的其余部分是项目的描述。通过单击标题,用户应该能够更改它,通过单击描述,他们也应该能够更改它。

直到更改标题一切正常,我已设法做到这一点。问题在于改变描述。我尝试使用委托,但我想我必须使用一些错误的命令,因为它根本不起作用。我尝试在网上寻找它,但我找到的只是TextField的解决方案,它并没有真正帮助我,因为我想显示一个可能的多行描述,我宁愿不必从TextView更改为每次用户想要编辑它时都会显示TextField。所以,如果有人能帮我解决这个问题,那就太棒了。

以下是我尝试使用委托的代码。

on viewDidLoad我有这个:

[self.descriptionLabel setDelegate:self.descriptionLabel.delegate];

然后我有了这个,它应该在文本更改后执行操作:

- (void)textViewDidChange:(UITextView *)textView {
    NSLog(@"Hello World");
}

P.S。:我也在寻找一种方法来完成"完成"按钮显示在键盘上,因为到目前为止,一旦键盘出现,再次将其关闭的唯一方法是返回到表视图,然后再次进入详细视图。我已经尝试了几件事,但我承认我的研究并不太彻底。因此,作为旁注,如果你也可以证明这一点,那就太好了,否则,我真正关注的一件事就是上面的问题。谢谢你的帮助! :

1 个答案:

答案 0 :(得分:1)

基于评论的答案摘要。

该行:

[self.descriptionLabel setDelegate:self.descriptionLabel.delegate];

需要:

self.descriptionLabel.delegate = self;

您希望视图控制器成为委托,因为视图控制器实现了文本视图委托方法。

您还需要指明视图控制器符合UITextViewDelegate协议。

在.m文件中,添加以下内容:

@interface DetailViewController () <UITextViewDelegate>

@end