在这里实现了以下几种功能:
1.点击按钮实现页面的跳转
2.点击空白处实现键盘回收
3.点击return实现换行
4.添加清除符号实现清除textField中的文字
5.点击登陆按钮,实现UIAlert功能,弹出信息
6.实现视图上下移动
效果图
以下是源代码,各处有注释:
第一步: 在AppDelegate.m文件中 建立根视图
// 创建一个登陆页面
self.landVC =[[LandingViewController alloc] init];
// 给window设置根视图
_window.rootViewController =_landVC;
[_landVC release];
第二步:在根视图LandingViewController.m文件中建立登陆页面:
#import "LandingViewController.h"
#import "PasswordViewController.h"
#import "RegistViewController.h"
#import "messageViewController.h"
@interface LandingViewController ()<UITextFieldDelegate,UIAlertViewDelegate>
@property(nonatomic ,retain)PasswordViewController *passWordVC;
@property(nonatomic, retain)UIAlertView *alertView;
@property(nonatomic, retain)UIAlertView *succeedAlertView;
@end
@implementation LandingViewController
-(void)dealloc{
[_alertView release];
[super dealloc];
}
-(void)loadView{
// super调用父类
[super loadView];
NSLog(@"%s", __FUNCTION__);
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
// 创建两个textfield
for (int i =1; i<3; i++) {
UITextField *textFieldi =[[UITextField alloc] initWithFrame:CGRectMake(150, 100+70*i, 150, 35)];
textFieldi.delegate =self;
textFieldi.layer.borderWidth =2;
textFieldi.layer.cornerRadius =10;
[self.view addSubview:textFieldi];
textFieldi.clearButtonMode=UITextFieldViewModeAlways;
textFieldi.tag =1010+i;
[textFieldi release];
}
((UITextField *)[self.view viewWithTag:1012]).secureTextEntry =YES;
// 两个label
for (int i=1; i < 3 ; i++){
UILabel *labeli =[[UILabel alloc] initWithFrame:CGRectMake(80, 100+70*i, 100, 35)];
[self.view addSubview:labeli];
labeli.tag =1000+i;
[labeli release];
}
UILabel *tempLabel =[UIButton buttonWithType:UIButtonTypeSystem];
tempLabel =(UILabel *)[self.view viewWithTag:1001];
tempLabel.text =@"用户名";
UILabel *temp1Label =[UIButton buttonWithType:UIButtonTypeSystem];
temp1Label =(UILabel *)[self.view viewWithTag:1002];
temp1Label.text =@"密码";
// 创建三个button
for(int i =0; i<3 ;i++){
UIButton *buttoni=[UIButton buttonWithType:UIButtonTypeSystem];
buttoni.frame=CGRectMake(50+100*i, 320, 80, 30);
[buttoni setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[self.view addSubview:buttoni];
buttoni.tag =1003+i;
}
// 登陆按钮
UIButton *landButton =(UIButton *)[self.view viewWithTag:1003];
[landButton setTitle:@"登陆" forState:UIControlStateNormal];
[landButton addTarget:self action:@selector(landClick:) forControlEvents:UIControlEventTouchUpInside];
// 找回密码 按钮
UIButton *passWordButton =(UIButton *)[self.view viewWithTag:1004];
[passWordButton setTitle:@"找回密码" forState:UIControlStateNormal];
[passWordButton addTarget:self action:@selector(passWordclick:) forControlEvents:UIControlEventTouchUpInside];
// 注册按钮
UIButton *registButton =(UIButton *)[self.view viewWithTag:1005];
[registButton setTitle:@"注册" forState:UIControlStateNormal];
[registButton addTarget:self action:@selector(registClick:) forControlEvents:UIControlEventTouchUpInside];
// 显示密码按钮
UIButton *showPassWordButton =[UIButton buttonWithType:UIButtonTypeCustom];
showPassWordButton.frame =CGRectMake(110, 290, 20, 20);
[self.view addSubview:showPassWordButton];
showPassWordButton.tag =100;
[showPassWordButton setBackgroundImage:[UIImage imageNamed:@"check.png"] forState:UIControlStateNormal];
[showPassWordButton addTarget:self action:@selector(showPassWord:) forControlEvents:UIControlEventTouchUpInside];
UILabel *showPassWord=[[UILabel alloc] initWithFrame:CGRectMake(150, 290, 80, 20)];
showPassWord.text =@"显示密码";
[self.view addSubview:showPassWord];
[showPassWord release];
// 添加两个 alertView
self.alertView =[[UIAlertView alloc] initWithTitle:@"对不起" message:@"账号或密码输入错误" delegate:self cancelButtonTitle:@"重新输入" otherButtonTitles:@"找回密码", nil];
self.alertView.tag =1020;
// self.alertView.delegate = self;
[self.alertView release];
self.succeedAlertView =[[UIAlertView alloc ] initWithTitle:@"登陆成功" message:nil delegate:self cancelButtonTitle:@"确认" otherButtonTitles:@"返回", nil];
self.succeedAlertView.tag =1021;
// self.succeedAlertView.delegate = self;
[self.succeedAlertView release];
}
-(void)showPassWord:(UIButton *)button{
UIButton *but=(UIButton *)[self.view viewWithTag:100];
if (but.selected==1) {
[but setBackgroundImage:[UIImage imageNamed:@"check.png"] forState:UIControlStateNormal];
}else{
[but setBackgroundImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal];
}
but.selected ^=1;
((UITextField *)[self.view viewWithTag:1012]).secureTextEntry ^=1;
}
#pragma mark 点击空白处回收键盘
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[(UITextField *)[self.view viewWithTag:1012] resignFirstResponder];
[(UITextField *)[self.view viewWithTag:1011] resignFirstResponder];
}
//#pragma mark 键盘回收
//
//-(BOOL)textFieldShouldReturn:(UITextField *)textField{
// [textField resignFirstResponder];
// return YES;
//}
#pragma mark 视图上下移动
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
if (textField.frame.origin.y>self.view.frame.size.height/2) {
CGFloat height =textField.frame.origin.y -self.view.frame.size.height/2;
self.view.center =CGPointMake(self.view.center.x, self.view.center.y-height);
}
return YES;
}
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField{
if (textField.frame.origin.y>self.view.frame.size.height/2) {
CGFloat height =textField.frame.origin.y -self.view.frame.size.height/2;
self.view.center =CGPointMake(self.view.center.x, self.view.center.y-height);
}
return YES;
}
#pragma mark 点击找回密码按钮 实现跳页
-(void)passWordclick:(UIButton *)button{
//创建一个PassWordViewController
PasswordViewController *passWordVC=[[PasswordViewController alloc] init];
// 设置动画效果
[passWordVC setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
// 进行跳转
[self presentViewController:passWordVC animated:YES completion:^{
}];
[passWordVC release];
}
#pragma mark 点击注册按钮 实现跳页
-(void)registClick:(UIButton *)button{
// 创建一个RegistViewController
RegistViewController *registVC=[[RegistViewController alloc] init];
// 设置动画效果
[registVC setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
// 进行跳转
[self presentViewController:registVC animated:YES completion:^{
}];
[registVC release];
}
#pragma mark 点击登陆按钮判断是否正确
-(void)landClick:(UIButton *)button{
if ([((UITextField *)[self.view viewWithTag:1011]).text isEqualToString: @"123"]&&[((UITextField *)[self.view viewWithTag:1012]).text isEqualToString:@"123"]) {
[self.succeedAlertView show];
}else{
[self.alertView show];
}
}
#pragma mark 实现判断密码是否正确的通知
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (alertView.tag == 1020) {
if(buttonIndex ==1){
PasswordViewController *passWordVC=[[PasswordViewController alloc] init];
// 设置动画效果
[passWordVC setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
// 进行跳转
[self presentViewController:passWordVC animated:YES completion:^{
}];
[passWordVC release];
}
}else if(alertView.tag ==1021){
if (buttonIndex ==0) {
messageViewController *messVC=[[messageViewController alloc] init];
[messVC setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentViewController:messVC animated:YES completion:^{
}];
[messVC release];
}
}
}
第三步:建立注册视图控制器 创建方法
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//label
for (int i =0; i < 5; i++) {
UILabel *labeli=[[UILabel alloc] initWithFrame:CGRectMake(80, 120+65*i, 100, 30)];
[self.view addSubview:labeli];
labeli.tag =1000+i;
[labeli release];
}
UILabel *nameLabel=(UILabel *)[self.view viewWithTag:1000];
nameLabel.text =@"用户名";
UILabel *passwordLabel =(UILabel *)[self.view viewWithTag:1001];
passwordLabel.text =@"密码";
UILabel *rePasswordLabel =(UILabel *)[self.view viewWithTag:1002];
rePasswordLabel.text =@"确认密码";
UILabel *phoneNumLabel =(UILabel *)[self.view viewWithTag:1003];
phoneNumLabel.text =@"手机号";
UILabel *emailLabel =(UILabel *)[self.view viewWithTag:1004];
emailLabel.text =@"邮箱";
// textfield
for(int i =0;i<5; i++) {
UITextField *textFieldi=[[UITextField alloc] initWithFrame:CGRectMake(180, 120+65*i, 130, 30)];
textFieldi.layer.borderWidth=1;
textFieldi.layer.cornerRadius=10;
[self.view addSubview:textFieldi];
textFieldi.delegate =self;
textFieldi.clearButtonMode=UITextFieldViewModeAlways;
textFieldi.tag =1010+i;
[textFieldi release];
}
UITextField *nameTextField=(UITextField *)[self.view viewWithTag:1010];
nameTextField.placeholder=@" 请输入用户名";
UITextField *passwordTextField=(UITextField *)[self.view viewWithTag:1011];
passwordTextField.placeholder=@" 请输入密码";
UITextField *rePasswordTextField=(UITextField *)[self.view viewWithTag:1012];
rePasswordTextField.placeholder=@" 再次输入密码";
UITextField *phoneNumTextField=(UITextField *)[self.view viewWithTag:1013];
phoneNumTextField.placeholder=@" 请输入联系方式";
UITextField *emailTextField=(UITextField *)[self.view viewWithTag:1014];
emailTextField.placeholder=@" 请输入邮箱";
// 注册按钮
UIButton *registButton =[UIButton buttonWithType:UIButtonTypeSystem];
registButton.frame=CGRectMake(120,430 , 60, 30);
[registButton setTitle:@"注册" forState:UIControlStateNormal];
[self.view addSubview:registButton];
registButton.tag =2000;
// UIAlertView *alertView=[[UIAlertView alloc] init];
// [alertView initWithTitle:@"恭喜" message:@"注册成功" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:@"取消", nil];
// [registButton addTarget:self action:@selector(registClick:) forControlEvents:UIControlEventTouchUpInside];
//
// 取消按钮
UIButton *cancelButton=[UIButton buttonWithType:UIButtonTypeSystem];
cancelButton.frame =CGRectMake(200, 430, 60, 30);
[cancelButton setTitle:@"取消" forState:UIControlStateNormal];
[self.view addSubview:cancelButton];
[cancelButton addTarget:self action:@selector(cancelClick:) forControlEvents:UIControlEventTouchUpInside];
// alertView
self.alertView=[[UIAlertView alloc] init];
self.alertView =[[UIAlertView alloc ] initWithTitle:@"恭喜" message:@"注册成功" delegate:self cancelButtonTitle:@"确认" otherButtonTitles:@"返回", nil];
[registButton addTarget:self action:@selector(registClick:) forControlEvents:UIControlEventTouchUpInside];
}
#pragma mark 点击空白处回收键盘
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
// for (int i =0; i<5; i++) {
// [(UITextField *)[self.view viewWithTag:(1010+i)] resignFirstResponder];
// }
[self.view endEditing:YES];
}