iOS的心路里程iOS开发进阶iOS技术资料

iOS控件 -UITextField/UITextView-文本

2017-11-15  本文已影响137人  罂粟之城

此中所述两种UI控件,皆为文本输入控件,即可接收用户输入的UI控件。


>>>UITextField是作为文字输入控件,分别可以作为常用的用户名,手机号和密码的输入框,下面是UITextField的一些属性。


///1. UITextField输入框中显示提示信息
  UITextField *textField = [[UITextField alloc]init];
  textField.placeholder=@"提示信息"

///2. 修改placeholder中的字体颜色及字体大小:
[inputNumber setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"];
[inputNumber setValue:[UIFont boldSystemFontOfSize:21.0] forKeyPath:@"_placeholderLabel.font"];

///3. UITextField输入框输入时需要使用安全文本输入或者输入密码:
  textField.secureTextEntry = YES

///4. UITextField显示在框中最后显示的“x”清除按钮及类型:
  textField.clearButtonMode = UITextFieldViewModeWhileEditing/...

///5. UITextField调用虚拟键盘时return显示
  textField.returnKeyType = UIReturnKeyDone/UIReturnKeySearch....  //当选择UIReturnKeyDone时可以增加监听器作为放弃第一响应者

///6.   根据不同的输入框更改出现的虚拟键盘:
  inputNumber.keyboardType = UIKeyboardTypeNumberPad/UIKeyboardType...;

///7.   在使用纯代码创建UITextField时,需要设置边框borderStyle:,以及borderWidth和borderColor。

>>>UITextView是多行文本控件

有些属性类似等同于UITextField
    UITextView各种方法属性使用:
    textView.layer.borderColor = [UIColor grayColor].CGColor;
    textView.layer.borderWidth =1.0;
    textView.layer.cornerRadius =5.0;

>>> 在使用输入框控件时可设置为实时获取输入框内容
使用UITextFieldDelegate代理方法
// 明文切换密文后避免被清空  此方法可获取输入框内容
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
 {
    // 获取输入框内容
    NSString *toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];
    // 打印输入框的内容
    NSLog(@"%@",toBeString);   
    if(textField == self.textPassword && textField.isSecureTextEntry) {
        textField.text = toBeString;
        return NO;
    }
    return YES;
}
>>>输入框中,明文和密文之间切换
//自定义方法
// UItextField输入框密文、明文之间的切换
- (void)showAndHidePassword:(UIButton *)sender {
     // 避免明文/密文切换后光标位置偏移,ios10 以后自动修复光标问题
    //self.textField.enabled = NO;
    self.textPassword.secureTextEntry = sender.selected;
    sender.selected = !sender.selected;
   // self.textField.enabled = YES;
    //[self.textField becomeFirstResponder];
}

>>>设置点击虚拟键盘return 后,可关闭虚拟键盘

关闭虚拟键盘,还可以使用其它方法去调用textField.hidden = YES; 隐藏键盘,或者取消键盘的第一响应也可。
以上关闭虚拟键盘的方法,大多在调用虚拟键盘输入完毕后,需要进行下一步操作,关闭键盘时使用。
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES; 
}
上面的关闭虚拟键盘,引出了一个新的问题,就是当虚拟键盘出现,是否有过遮挡某些控件的时候?那么问题就来了。一般处理逻辑有两种:1. 当键盘出现时,整个视图全部上移足够的距离,以便展示所有需要显示的控件。2. 使用滑动控件,UIScrollView控件,可在设置了控件的内容展示范围后,自由滑动展示的范围,所见范围不受所有控件遮挡和约束。- - - >后面我也会总结出,当键盘遮挡输入框时,或者遮挡控件时的几种处理方法。

以上为UITextField/UITextView基本的使用,不以偏概全,只授之以渔,如果您有UITextField/UITextView控件的更好使用欢迎留言交流!
上一篇下一篇

猜你喜欢

热点阅读