输入框 UITextFiled

一、输入框的创建和属性
1.创建输入框
UITextField * textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 20, 300, 50)];
[self.view addSubview:_textField];
2.设置边框
//如果不设置,那么没有边框(默认是没有边框的)
textField.borderStyle = UITextBorderStyleLine;
【补充:borderStyle边框的类型(枚举值)
//    UITextBorderStyleNone,  (默认)
//    UITextBorderStyleLine,
//    UITextBorderStyleBezel,
//    UITextBorderStyleRoundedRect
3.设置字体
(1)设置字体颜色
textField.textColor = [UIColor redColor];
(2)设置字体大小
textField.font = [UIFont boldSystemFontOfSize:30];
(2)设置字体对齐方式
textField.textAlignment = NSTextAlignmentCenter;
4.设置是否显示密码输入(显示小黑点)
textField.secureTextEntry = YES;
5.设置键盘类型
textField.keyboardType = UIKeyboardTypeURL;
【补充:keyboardType键盘类型(枚举值)
UIKeyboardTypeDefault
// Default type for the current input method.
UIKeyboardTypeASCIICapable        
//which can enter ASCII characters
UIKeyboardTypeNumbersAndPunctuation 
// Numbers and assorted punctuation.
UIKeyboardTypeURL                  
// A type optimized for URL entry (shows . / .com prominently).
UIKeyboardTypeNumberPad             
// A number pad (0-9). Suitable for PIN entry.
UIKeyboardTypePhonePad              
// A phone pad (1-9, *, 0, #, with letters under the numbers).
UIKeyboardTypeNamePhonePad         
// A type optimized for entering a person's name or phone number.
UIKeyboardTypeEmailAddress          
// A type optimized for multiple email address entry (shows space @ . prominently).
6.设置清空按钮
_textField.clearButtonMode = UITextFieldViewModeWhileEditing;
【补充:clearButtonMode清空按钮的存在方式】
//UITextFieldViewModeNever,  (默认)
//UITextFieldViewModeWhileEditing,
//UITextFieldViewModeUnlessEditing,
//UITextFieldViewModeAlways
7.空白提示
 _textField.placeholder = @"请输入用户名";
8.设置输入框背景图片
//(需要修改borderStyle边框UITextBorderStyleNone
[_textField setBackground:[UIImage imageNamed:@""]];
9.输入框左侧图片  (这种方式设置一般比较难看,我们通常直接放imageView,然后再放一个无边框的textField
(1)设置输入框左侧图片背景
UIImageView * leftView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
leftView.image = [UIImage imageNamed:@""];
_textField.leftView = leftView;
(2)设置左侧图片的显示模式
_textField.leftViewMode = UITextFieldViewModeAlways;
【补充:leftViewMode清空按钮的存在方式】
(与clearButtonMode模式一样,都是UITextFieldViewMode类型
//UITextFieldViewModeNever,  (默认)
//UITextFieldViewModeWhileEditing,
//UITextFieldViewModeUnlessEditing,
//UITextFieldViewModeAlways
10.判断输入框输入内容的长度
//系统方法(需要重写)(这里的string是每次输入的字符,每输入一个字符调用一次该方法)
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
如下面重写
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    //判断输入框是哪个输入框
    if (textField == _textField) {
        //获取输入的内容
        NSMutableString * str = [NSMutableString stringWithString:_textField.text];
        [str appendString:string];
        //控制输入的字符串的长度
        if (str.length > 8) {
            return NO;
        }
    }
     return YES;
}

11.自动提示大小写
_textField.autocapitalizationType = UITextAutocapitalizationTypeWords;
//【补充:自动提示大小写方式】
UITextAutocapitalizationTypeNone (默认)
UITextAutocapitalizationTypeWords     首字母大写
UITextAutocapitalizationTypeSentences     句首大写
UITextAutocapitalizationTypeAllCharacters     全部大写
12.是否自动显示修正后的单词
_textField.autocorrectionType = UITextAutocorrectionTypeYes;

二、键盘处理
1.收键盘的两种方式
(1)使用return键收键盘
- (BOOL)textFieldShouldReturn:(UITextField *)textField;
<UITextFieldDelegate>协议中的方法,只要用户点了键盘上的return键,系统就会执行该函数。
因此,可以重写该方法来进行收键盘处理。注意,使用该方法的类必须要遵循<UITextFieldDelegate>协议。
    //存在的问题 我们预先不知道用户什么时候进行这些操作
    //但是textFiled自己知道用户什么时候进行操作
    //解决的方式 textFiled事件发生了之后, 通知我们进行处理
    //使用代理
    //<1> 设置代理
    //  协议中规定了代理对象发送的消息
    //<2>self所在的类遵守delegate指定的协议
    //<3>需要实现协议中必须实现的方法
    textField.delegate = self;
    //这个方法是键盘上的Return被点击之后执行
    //这个方法是由 textFiled调用的
    //textFiled保存了当前的对象指针  self.delegate
    //当事件发生的时候, 会通过self.delegate调用现在这个方法
例如:(用下面的方式进行重写)
- (BOOL)textFieldShouldReturn:(UITextField *)textField{   
//    _textField辞去第一响应者的身份
//    [_textField resignFirstResponder];
   
    if (textField == _textField) {
        [_textField resignFirstResponder];//第一个输入框辞去第一响应者身份
        [_textField1 becomeFirstResponder];//第二个输入框成为第一响应者

    }else if (textField == _textField1){
        [_textField resignFirstResponder];
        [_textField1 resignFirstResponder];
        //两个都不做第一响应者
    }
    return YES;//这里return YES,表示处理用户点return这个动作,如果return NO,表示忽略用户点return的动作 ???
}
(2)手势收键盘
//先定义一个手势,执行的动作是tapAction方法
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction)];
[self.view addGestureRecognizer:tap];
//tapAction方法
-(void)tapAction{
    [_textField resignFirstResponder];
}
2.监听收键盘和出键盘的操作,实现某种功能
例如:出键盘时,键盘可能会将屏幕下侧的控件给挡住,这就需要出键盘时将控件上移,所以需要监听收键盘和出键盘的操作
这里可以使用iOS系统事件通知来解决
//系统监听通知,并执行一个方法 (这里执行的方法是我们需要实现的方法,即在方法里将控件上移或下移)
//name参数:系统事件的名字,object是传递的参数
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector( keyboardWillHid) name:UIKeyboardWillHideNotification object:nil];
下面是方法的实现:
-(void)keyboardWillShow{
//  这里需要判断一下是哪一个textField,[textField isFirstResponder]
    UITextField * textField = (UITextField *)[self.view viewWithTag:102];
    if ([textField isFirstResponder]) {
        self.view.frame = CGRectMake(0, -50, 320, 480);
    }
}
【补充】关于系统通知的post和add (发通知和监听通知)
下面以changeAllPageColor为例(考试视频最后一个页面)
(1)在最后一个页面发通知:(代码如下)
     //这里把页面背景当做参数传递过去
     [[NSNotificationCenter defaultCenter] postNotificationName:@"allChangeColor" object:self.view.backgroundColor];
(2)在前面页面监听通知:(代码如下)
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeColor:) name:@"allChangeColor" object:nil];
     监听到通知后执行的方法changeColor:
     -(void)changeColor:(NSNotification *)notification{
         self.view.backgroundColor = notification.object;//获取传过来的值
     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haiooh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值