所以,我有一个带有 Objective-C 的非常简单的列表项目,其中列表中的每个项目都应该有一个标题和描述。单击其中一项时,会显示该项目的详细 View 。导航栏上的标题是项目的标题, View 的其余部分是项目的描述。通过单击标题,用户应该能够更改它,并且通过单击描述,他们也应该能够更改它。
在更改标题之前一切都很顺利,我已经成功做到了。问题是当涉及到改变描述时。我尝试使用委托(delegate),但我想我一定使用了错误的命令,因为它根本不起作用。我尝试在网上寻找它,但我找到的只是 TextField 的解决方案,这对我没有真正的帮助,因为我想显示可能的多行描述,并且我不想每次都从 TextView 更改为 TextField用户想要编辑它的时间。因此,如果有人能帮助我解决这个问题,那就太好了。
这是我尝试使用委托(delegate)的代码。
在viewDidLoad
上我有这个:
[self.descriptionLabel setDelegate:self.descriptionLabel.delegate];
然后我有这个,它应该在文本更改后执行操作:
- (void)textViewDidChange:(UITextView *)textView {
NSLog(@"Hello World");
}
P.S.:我也在寻找一种让“完成”按钮显示在键盘上的方法,因为到目前为止,一旦键盘被调出,再次按下它的唯一方法就是返回到 TableView ,然后再次进入详细 View 。我已经尝试过一些事情,但我承认我的研究还不够彻底。因此,作为旁注,如果您也能证明这一点,那就太好了,否则,我真正想要的一件事就是上面的问题。谢谢你的帮助! :]
最佳答案
根据评论总结答案。
行:
[self.descriptionLabel setDelegate:self.descriptionLabel.delegate];
需要:
self.descriptionLabel.delegate = self;
您希望 View Controller 成为委托(delegate),因为 View Controller 实现了 TextView 委托(delegate)方法。
您还需要指示 View Controller 符合 UITextViewDelegate
协议(protocol)。
在您的 .m 文件中,添加以下内容:
@interface DetailViewController () <UITextViewDelegate>
@end
关于ios - 实现 textViewDidChange :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25210236/