ios - 实现 textViewDidChange :

标签 ios objective-c textview

所以,我有一个带有 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/

相关文章:

ios - 写入: Operation not permitted issue while working pdf

ios - 使 CollectionView Cell 水平单元格比其他单元格大

ios - 当我尝试运行此页面时应用程序崩溃

ios - dispatch_after 会阻塞 UI 吗?

objective-c - 如何在 Objective-C 中创建策略模式?

android - 如何让Android TextView 自动向下滚动到末尾?

android - Textview 在 setRetainInstance 中不起作用

ios - AVCaptureSession 最大持续时间

ios - 如何检查和删除 TableView 中的重复值?

objective-c - Swift 继承问题 - 无法访问继承的属性