1.UILabel
a.创建
1、开辟空间并初始化(如果本类有初始化方法,使用自己的;否则使用父类的)。
2、设置文本控制相关的属性
3、添加到父视图上,用以显示
4、释放
UILabel *userNameLabel = [[UILabelalloc]initWithFrame:CGRectMake(30,100,100,30)];
userNameLabel.text =@"用户名";
[containerView addSubview:userNameLabel];
[userNameLabel release];
b.文本相关显示
文本显示相关:文本内容text,文本字体font,文本颜色textColor,文本对其方式tectAlignment,文本换行模式lineBreakMode,文本行数numberOfLines,文本阴影showColor等
1.UITextField
a.创建
1、开辟空间并初始化(如果本类有初始化方法,使用自己的;否则使用父类的) 2、设置文本控制相关的属性 3、添加到父视图上用以显示 4、释放UILabel *userNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(30, 100, 100, 30)]; userNameLabel.text = @"用户名"; [containerView addSubview:userNameLabel]; [userNameLabel release];
属性名 描述 示例
text 要显示的文本内容 textField.text = @“lanoukeji”;textColor 文本内容的颜色 textField.textColor = [UIColor redColor];
textAlignment 文本的对齐方式(水平方向) textField.textAlignment = NSTextAlignmentLeft;
font 文本字体 textField.font = [UIFont fontWithName:@“Helvetica-Bold” size:20];//黑体加粗,20号字。
placeholder 占位字符串(没有任何输入时,给出的提示字符串) textField.placeholder = @“请输入用户名”
属性名 | 描述 | 示例 |
editing | 是否允许输入 | textField.editing =NO;//不允许输入,不弹出建键盘 textField.editing =YES;//默认是YES。允许输入 |
clearsOnBeginEditing
是否开始输入的时候清空输入框内容
textField.clearsOnBeginEditing = YES;//清空
textField.clearsOnBeginEditing = NO;//不清空
secureTextEntry
是否文字以圆点格式显示
textField.secureTextEntry = YES;//密码模式
textField.secureTextEntry = NO;//普通模式
keyboardType
弹出键盘的类型(枚举值)
textField.keyboardType = UIKeyboardTypeNumberPad; //数字键盘
returnKeyType
键盘右下角return按钮类型(枚举值)
textField.returnKeyType = UIReturnKeyNext;
inputView
自定义输入视图(默认是键盘)
textField.inputView = myInputView;
inputAccessoryView
输入视图上方的辅助视图(默认nil)
textField.inputAccessoryView = myAccessoryView;
属性名 | 描述 | 示例 |
borderStyle | 边框样式(枚举值) | textField.borderStyle = UITextBorderStyleRoundedRect; |
clearButtonMode | 清除按钮模式(枚举值) | textField.clearButtonMode = UITextFieldViewModeAlways; //总是显示清除按钮 |
leftView | 输入框左视图 | textField.leftView = leftView; |
leftViewMode | 左视图的显示模式 | textField.leftViewMode = UITextFieldViewModeAlways; //总是显示左视图 |
rightView | 输入框右视图 | textField.rightView = rightView; |
rightViewMode | 右视图的显示模式 | textField.rightViewMode = UITextFieldViewModeAlways; |
3.UIButton
a.创建
创建UIButton与创建UILabel、UITextField、UIView的步骤很相似。
1、创建button对象(如果本类有初始化方法,使用自己的;否则使用父类的)。
2、设置按钮显示相关的属性
3、为按钮添加点击事件
4、添加按钮到父视图上,用以显示
5、按钮无需释放(因为使用的是类方法创建的button,如果是alloc创建,需释放)
UIButton *loginButton = [UIButton buttonWithType:UIButtonTypeSystem];
loginButton.frame = CGRectMake(30, 200, 60, 30);
[loginButton setTitle:@"登录" forState:UIControlStateNormal];
[loginButton addTarget:self action:@selector(login:) forControlEvents:UIControlEventTouchUpInside];
[containerView addSubview:loginButton];
b.属性
UIButton从父类UIControl那继承了控制相关的方法,比如添加事件、移除事件等
方法名 | 描述 | 示例 |
addTarget:action:forControlEvents: | 为按钮添加事件,指定按钮点击之后,执行target的action方法 | [loginButton addTarget:self action:@selector(login:) forControlEvents:UIControlEventTouchUpInside]; |
removeTarget:action:forControlEvents: | 移除按钮的点击事件 | [loginButton removeTarget:self action:@selector(login:) forControlEvents:UIControlEventTouchUpInside]; |
4.UIAlertView
a.创建UIAlertView的步骤如下:
1、开辟空间并初始化视图(初始化时,给出视图位置和大小)。
3、调用UIAlertView的show方法,呈现提示框。
4、释放UIAlertView对象
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"请妥善保管好你的密码" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
[alertView show];
[alertView release];
5.delegate
delegate是MVC设计模式中(delegate也是设计模式),V与C通信的方式之一。在iOS中广泛使用。核心价值在于实现回调,起到解耦的作用。
如果一个类有些方法自己不方便实现或者别的类实现更好,这个时候就可以使用delegate这种设计模式了。
a.点return回收键盘
点击键盘return按钮实现键盘回收的步骤:
1、将AppDelete作为UITextField的delegate
2、AppDelete.h文件接受UITextFieldDelegate协议
3、AppDelete.m文件实现textFieldShouldReturn:方法
b.键盘回收代码AppDelegate.m
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
c.处理alertView点击
1、将AppDelete作为UIAlertView的delegate
2、AppDelete.h文件接受UIAlertViewDelegate协议
3、AppDelete.m文件实现alertView:clickedButtonAtIndex:方法
alertView响应点击
AppDelegate.m
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
switch (buttonIndex) {
case 0:
NSLog(@"点了取消,取消按钮的下标为0");
break;
case 1:
NSLog(@"点了确定按钮,确定按钮的下标为1");
break;
default:
break;
}
}
6.总结
UITextField不应该在类内部(.m文件)实现textFieldShouldReturn:,应为有时候,我们点return的时候,并不总是想回收键盘,例如:有两个输入框,第一个输入框输入完成之后,用户点return按钮,将光标移动到第二个输入框(即:第二个输入框称为第一响应者)
UIAlertView不应该在类内部(.m文件)实现alertView:clickedButtonAtIndex:方法,因为UIAlertView自己并不知道点击按钮之后要做什么事。
对于一个V来说,自己只负责触发事件,事件由外界实现,即delegate。
7.课上代码
#pragma mark_
#pragma mark 登录按钮的点击事件
- (void)loginAction:(id)sender
{
NSLog(@"%s",__func__);
NSLog(@"sender == %@",sender);
[self.view3 resignFirstResponder];
// 获得输入框内容
NSString * user = self.view3.text;
NSLog(@"user == %@",user);
if ([user isEqualToString:@"123456"]) {
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"输入正确" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"正确",@"返回", nil];
// 显示警告框
[alert show];
[alert release];
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"alertView === %@",alertView);
NSLog(@"buttonIndex == %d",buttonIndex);
if (1 == buttonIndex) {
[self.view3 setText:@""];
}
}
// 左右视图:setLeftView和setLeftViewMode配合使用
[_view3 setLeftView:left];
[_view3 setLeftViewMode:UITextFieldViewModeAlways];
// 设置数字键
// [view3 setKeyboardType:UIKeyboardTypeNumberPad];
// 把键盘上的return改成Done
[_view3 setReturnKeyType:UIReturnKeyDone];
// 设置密码不可见
[_view3 setSecureTextEntry:NO];
}
}