UITextField
输入框:是控制文本输入和显示的控件。
iOS系统借助虚拟键盘实现输入,当点击输入框,系统会自动调出键盘,方便 你进一步操作。在你不需要输入的时候,可以使用收回键盘的方法,收回弹出的键盘。
创建UITextField的步骤:
1、开辟空间并初始化(如果本类有初始化方法,使⽤用自己的;否则 使用父类的)。
2、设置文本显示、输入相关的属性
3、添加到父视图上,用以显示
4、释放
UITextField *userNameTextField = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 190, 30)];
userNameTextField.borderStyle = UITextBorderStyleRoundedRect;
userNameTextField.placeholder = @"手机号/邮箱"; [containerView addSubview:userNameTextField];
[userNameTextField release];
UITextField核心功能:
1.文本显示:
// 占位字(只有当没有输入的字 才会显示)
tf.placeholder = @"请输入用户名:";
// 设置字体大小
tf.font = [UIFont systemFontOfSize:17];
// 添加字
tf.text = @"";
tf.textColor = [UIColor cyanColor];
// 对齐方式
tf.textAlignment = NSTextAlignmentCenter;
2.输入控制:
//是否允许输入(默认YES)
tf.enabled = YES;
// 输入时清除原内容
tf.clearsOnBeginEditing = YES;
// 密文输入
tf.secureTextEntry = YES;
// 弹出键盘的类型(枚举)
tf.keyboardType = UIKeyboardTypeDefault;
// 弹出键盘右下角return按钮 类型
tf.returnKeyType = UIReturnKeyDone;
// 自定义键盘
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
view.backgroundColor = [UIColor greenColor];
tf.inputView = view;
[view release];
UIView *inputView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
// 键盘辅助视图
tf.inputAccessoryView = inputView;
[inputView release];
3.外观控制:
// 边框样式
tf.borderStyle = UITextBorderStyleRoundedRect;
// 清除按钮样式(右边的小叉叉)
tf.clearButtonMode = UITextFieldViewModeWhileEditing;
// 输入框左视图
UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
leftView.backgroundColor = [UIColor purpleColor];
tf.leftView = leftView;
tf.leftViewMode = UITextFieldViewModeWhileEditing;
[leftView release];
// 输入框右视图
UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
rightView.backgroundColor = [UIColor yellowColor];
tf.rightView = rightView;
tf.rightViewMode = UITextFieldViewModeUnlessEditing;
[rightView release];
4.其他功能:
// 利用循环创建UITextField方法(注重tag值的使用)
for (int i = 0; i < 2; i++) {
UITextField *ff = [[UITextField alloc] initWithFrame:CGRectMake(50, 120 + (i * 60), 250, 40)];
ff.backgroundColor = [UIColor yellowColor];
ff.delegate = self;
[self.window addSubview:ff];
[ff release];
}
// 设置代理(方法在哪儿实现的 就把谁设置成代理,添加UITextFieldDelegate)
tf.delegate = self;
// 第一响应者
[tf becomeFirstResponder];
// 键盘回收方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField
- {
// 键盘回收
// 取消第一响应者
[textField resignFirstResponder];
return YES;
}
// 设置标签
tf.tag = 100;
UITextField *tf = (UITextField *)[self.view viewWithTage:100];
UIButton
按钮:是响应用户点击的控件。
注:UIButton : UIControl : UIView
创建UIButton的步骤:
1、创建button对象(如果本类有初始化方法,使用自己的;否则使用
父类的)。
2、设置按钮显示相关的属性
3、为按钮添加点击事件
4、添加按钮到父视图上,用以显示
5、按钮无需释放(因为使用的是类方法创建的button)
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];
UIButton功能:
1.添加事件:
// 给button添加一个方法
[button addTarget:self action:@selector(click:) forControlEvents:(UIControlEventTouchUpInside)];
2.外观控制:
// 设置某个状态下的标题
[button setTitle:@"普通" forState:(UIControlStateNormal)];
[button setTitle:@"高亮" forState:(UIControlStateHighlighted)];
[button setTitle:@"选中" forState:(UIControlStateSelected)];
// 给某状态下 设置标题颜色
[button setTitleColor:[UIColor magentaColor] forState:(UIControlStateNormal)];
[button setTitleColor:[UIColor greenColor] forState:(UIControlStateHighlighted)];
[button setTitleColor:[UIColor purpleColor] forState:(UIControlStateSelected)];
// 给button添加前景图片
// 创建一张图片
// 如果不是png格式的图片 需要把后缀加上 如果是png 可以不加后缀
UIImage *image1 = [UIImage imageNamed:@"Normal"];
[button setImage:image1 forState:(UIControlStateNormal)];
UIImage *image2 = [UIImage imageNamed:@"Highlighted"];
[button setImage:image2 forState:(UIControlStateHighlighted)];
UIImage *image3 = [UIImage imageNamed:@"Selected"];
[button setImage:image3 forState:(UIControlStateSelected)];
// 添加背景图片
[button setBackgroundImage:[UIImage imageNamed:@"Normal"] forState:(UIControlStateNormal)];
[button setBackgroundImage:[UIImage imageNamed:@"Highlighted"] forState:(UIControlStateHighlighted)];
[button setBackgroundImage:[UIImage imageNamed:@"selected"] forState:(UIControlStateSelected)];
小节
UIView是所有可视化控件的基类。
UILabel、UITextField、UIButton是具有特定外观特定功能的视图。
UILabel侧重于文本的呈现。
UITextField侧重于输入。
UIButton侧重于点击事件处理。
delegate
点return回收键盘步骤:
1、将AppDelete作为UITextField的delegate
2、AppDelete.h文件接受UITextFieldDelegate协议
3、AppDelete.m文件实现textFieldShouldReturn:方法
// 利用响应者 实现点击return,光标移到下一个textField
for (int i = 0; i < 3; i++) {
UITextField *tf1 = [[UITextField alloc] initWithFrame:CGRectMake(100, 100 + (i * 60), 180, 40)];
tf1.backgroundColor = [UIColor lightGrayColor];
tf1.borderStyle = UITextBorderStyleRoundedRect;
tf1.textColor = [UIColor blackColor];
tf1.delegate = self;
tf1.tag = kTextFieldTag + i;
[self.window addSubview:tf1];
[tf1 release];
}
return YES;
}
// 键盘return按键的键盘回收方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField
- {
// 利用tag值取出下一个textField
UITextField *tf = (UITextField *)[self.window viewWithTag:textField.tag + 1];
// 成为第一响应者
[tf becomeFirstResponder];
// 判断是不是最后一个UITextField
if (textField.tag == 102) {
// 是最后一个 直接回收键盘
[textField resignFirstResponder];
}
return YES;
}
ios程序启动流程
main函数始终是程序的入口
任何一个程序,无论是基于Mac OS还是iOS,程序都是从main.m文
件的main函数开始执行的。
int main(int argc, char * argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil,
NSStringFromClass([AppDelegate class]));
}
}
执行UIApplicationMain函数时做了跳转,转到了AppDelete中
UIApplicationMain在程序入口函数main函数中调用,主要实现了3个功能:
1.创建应用程序(UIApplication)实例
2.创建应用程序代理实例
3.建立事件循环(runloop:死循环,不断检测程序运行状态,是否被触 摸、晃动等)
UIApplicationMain剖析:
int UIApplicationMain (
int argc,
char *argv[],
NSString *principalClassName,
NSString *delegateClassName
);
1、principalClassName:应用程序对象的类名(UIApplication或其子类)
2、delegateClassName:应用程序delegate的类名。(任何接受了 UIApplicationDelegate的类)
UIApplicationMain根据上述两个类名创建应用程序实例、应用程序代理实例。然后建立事件循环(runloop),检测程序的各种事件(程序开始启动,接收到触 摸等等)
应用程序代理
应用程序代理,主要检测应用程序的状态并做出相应的处理。
应用程序的状态有很多,比如:程序启动、进入活跃状态、进到后
台、内存警告、收到远程消息等等
任何接受了UIApplicationDelegate协议的对象都可以成为应用程序 代理。
一旦应⽤用程序的某种状态触发,就会执行相应的代理方法。

UIApplicationDelegate
UIApplicationDelegate是一个OC的协议。里面声明了一堆方法,这些方法都与应用程序运行状态有关,它们由应用程序代理实现。UIApplication 对象负责调用。