我想在我的iOS应用中实现一个标签,当用户在文本字段中键入新字符时,该标签会将其值更改为文本字段的值。
因此,我在视图控制器中编写了这个IB动作。
listenerLabel
是UILabel
IBOutlet,textInput
是UITextField
IBOutlet。
- (IBAction)keyboardResponse:(id)sender
{
listenerLabel.text = textInput.text;
}
然后我在头文件中声明了它。
- (IBAction)keyboardResponse:(id)sender;
之后,在我的xib文件中,我
keyboardResponse
相关联。但是,当我在iOS模拟器中运行应用程序时,标签的文本不会改变,因为我在文本字段中键入了字母。为什么不呢?
答案 0 :(得分:3)
您需要使用通知执行此操作。假设您将这些插座正确连接到标签和文本字段,请执行以下操作:
在viewDidLoad中:
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(myTextChanged)
name:UITextFieldTextDidChangeNotification
object:textInput];
添加此方法(您不需要那些IBActions
-(void)myTextChanged {
self. listenerLabel.text = textInput.text;
}
作为附注 - 学会使用助理编辑器,它可以在连接IBActions或IBOutlet时消除错误,并在viewDidUnload中自动添加清理。
答案 1 :(得分:1)
我会使用为此而制作的UITextFieldDelegate
方法。
让您的视图控制器采用此协议。即在你的.h文件中:
@interface YourViewController : UIViewController <UITextFieldDelegate> {
在Interface Builder中,将delegate
的{{1}}设置为视图控制器。
然后在.m文件中添加以下内容:(已编辑)
textInput