如何在iPhone编程中使用UITextField

Posted by Elton's Blog on October 6, 2009

下面的例子将展示如何通过UITextField的内容来改变UILabel中的内容

实现UITextField Delegate协议

首先我们需要在viewController的接口中声明实现UITextFieldDelegate代理协议

@interface TextField : UIViewController {

}
@end
</pre>

### 添加UILabel 和 UITextField对象
#import "TextField.h"

@implementation TextField
UILabel *label;
UITextField *textField;

- (void)viewDidLoad {
    [super viewDidLoad];

	//Create label
	label = [[UILabel alloc] init];
	label.frame = CGRectMake(10, 10, 300, 40);
	label.textAlignment = UITextAlignmentCenter;
	label.text = @"";
	[self.view addSubview:label]; 

	// Initialization code
	textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 200, 300, 50)];
	textField.delegate = self;
	textField.placeholder = @"";
	textField.textAlignment = UITextAlignmentCenter;
	[self.view addSubview: textField];
}

- (void)dealloc {
	[textField release];
	[label release];
    [super dealloc];
}

@end
</pre>
这段程序没有什么好说的,就是建立并初始化一个UILabel和UITextField对象
### 实现代理方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
	label.text = textField.text;
	[textField resignFirstResponder];

    return YES;
}
当用户按了键盘上的Return键后,此方法被调用。 它做了两件事,一件是把UILabel中的值设置成UITextField中的值,另外一个是关闭虚拟键盘。 iPhone编程中大量使用了代理和回调方法,是一种基本的设计模式,所以大家要熟悉这种编程模式。