gpt4 book ai didi

objective-c - [iPhone SDK] [菜鸟] UITextView textViewDidChange不会被调用?

转载 作者:搜寻专家 更新时间:2023-10-30 19:55:57 26 4
gpt4 key购买 nike

我有一个小型 iPhone 项目,我的 View 上有一个 UITextView,是在 Interface Builder 中设计的。我的 Viewcontroller 中有一个 IBAction 方法,我将 UITextView 连接到该 IBAction。我还在我的 Controller 中添加了 .h <UITextViewDelegate> .

在我的 .m 文件中,我添加了方法:

- (void)textViewDidChange:(UITextView *)textView{
int count = [textView.text length];
charCount.text = (NSString *)count;
}

但是当应用程序正在运行并且我在 textView 中键入内容时,方法 textViewDidChange 将永远无法访问。这是为什么?我还尝试在 ViewDidLoad 方法中添加 textView.delegate = self,但随后应用程序崩溃,调试器中没有任何消息。

有人提示我做错了什么吗?

非常感谢

微动

最佳答案

您走在正确的轨道上 - 方法未被调用的原因是您在更改文本之前没有设置 TextView 的委托(delegate)。我注意到在你的问题中你说你试图设置 testView.delegate = self; - 你是说 textView 吗?像这样的拼写错误通常会使程序崩溃而没有调试器消息。

此外,textFieldDidChange: 方法未在 UITextFieldDelegate 协议(protocol)中定义。您的意思可能是 textField:shouldChangeCharactersInRange:replacementString: - 这是在文本字段更改其内容时实际调用的委托(delegate)方法。仅将您自己的方法连接到 IBAction 并不能保证我认为您想要什么。

如果这些都不是您的问题,那么您需要返回并仔细检查 IB 和类头文件中的所有各种连接。您的 header 应如下所示:

// MyViewController.h

@interface MyViewController : UIViewController {
UITextField *textView;
}

@property(nonatomic,retain) IBOutlet UITextField *textView;

- (IBAction)myAction:(id)sender;

@end

以及您的实现:

// MyViewController.m

@implementation MyViewController

@synthesize textView;

- (IBAction)myAction:(id)sender {
// Do something
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
int count = [textView.text length];
charCount.text = (NSString *)count;
}

@end

本例中的重要文档是 UITextFieldDelegate协议(protocol)引用。

关于objective-c - [iPhone SDK] [菜鸟] UITextView textViewDidChange不会被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1342504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com