美文网首页JC专题iOS 开发
UITextField 和 UITextView

UITextField 和 UITextView

作者: RyderZhang | 来源:发表于2016-07-14 09:54 被阅读509次

    UITextView和UITextField最大的区别是:UITextView支持多行输入,而UITextField只能单行输入。实际上,UITextView继承自UIScrollView ,UITextField继承自UIView。在使用上我们完全可以把UITextView看作是UITextField的加强版。

    中国.jpg

    UITextField(输入框)

    /*
     command + k  显示或隐藏模拟器键盘
     */
    
    #import "ViewController.h"
    
    @interface ViewController ()<UITextFieldDelegate>//遵守协议
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        /*********UITextField(输入框)**********/
        //UITextField->UIControl->UIView
        // UITextView和UITextField是有区别的
        /*
         1、创建
         2、背景颜色
         3、添加
         */
        UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(30, 100, 260, 40)];
        //textField.backgroundColor = [UIColor grayColor];
        //colorWithPatternImage  将图片对象转成颜色对象
        //平铺的效果
        //textField.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"q.jpg"]];
        
        //边框类型:borderStyle
        /*
         1、UITextBorderStyleNone 无
         2、UITextBorderStyleRoundedRect   圆角
         3、UITextBorderStyleLine  直角   黑色
         4、UITextBorderStyleBezel  直角  灰色
         */
        textField.borderStyle = UITextBorderStyleRoundedRect;
        //文字颜色:textColor
        textField.textColor = [UIColor redColor];
        //字体大小:font
        textField.font = [UIFont systemFontOfSize:23.0];
        //对齐方式:textAlignment   水平方向对齐
        textField.textAlignment = NSTextAlignmentLeft;
        //对齐方式:垂直方向  contentVerticalAlignment
        textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
        //自适应文字大小:adjustsFontSizeToFitWidth
        textField.adjustsFontSizeToFitWidth = YES;
        //最小字体的设置:minimumFontSize
        textField.minimumFontSize = 23.0;
        
        //键盘颜色:keyboardAppearance  翻译:键盘的外观
        /*
         1、UIKeyboardAppearanceAlert=UIKeyboardAppearanceDark  黑色
         2、UIKeyboardAppearanceDefault=UIKeyboardAppearanceLight  白色
         */
        textField.keyboardAppearance = UIKeyboardAppearanceLight;
        //键盘样式:keyboardType
        /*
         1、UIKeyboardTypeAlphabet  符号键盘
         2、UIKeyboardTypeDecimalPad  数字键盘
         3、UIKeyboardTypePhonePad  数字键盘
         */
        textField.keyboardType = UIKeyboardTypeDefault;
        //return键样式
        /*
         1、UIReturnKeyDone  Done
         2、UIReturnKeyGoogle  Search
         */
        textField.returnKeyType = UIReturnKeyGoogle;
        //自动大写:autocapitalizationType
        /*
         1、UITextAutocapitalizationTypeAllCharacters  所有字母都大写
         2、UITextAutocapitalizationTypeNone  无
         3、UITextAutocapitalizationTypeSentences  每个句子的首字母大写
         4、UITextAutocapitalizationTypeWords 每个单词的首字母大写
         */
        textField.autocapitalizationType = UITextAutocapitalizationTypeWords;
        //是否自动纠错:autocorrectionType
        /*
         1、UITextAutocorrectionTypeDefault  默认
         2、UITextAutocorrectionTypeYes  纠错
         3、UITextAutocorrectionTypeNo  不纠错
         */
        textField.autocorrectionType = UITextAutocorrectionTypeNo;
        //提示文字:placeholder
        textField.placeholder = @"请输入账号";
        //密文效果:secureTextEntry
        textField.secureTextEntry = NO;
        
        //背景图片:background   边框状态为圆角:无效
        textField.background = [UIImage imageNamed:@"1.png"];
        
        //一键删除的按钮:出现状态
        /*
         1、UITextFieldViewModeAlways 一直出现
         2、UITextFieldViewModeNever  一直没有  默认效果
         3、UITextFieldViewModeWhileEditing  当编辑时出现,不编辑时消失
         4、UITextFieldViewModeUnlessEditing 当编辑时不出现,不编辑时出现
         */
        textField.clearButtonMode = UITextFieldViewModeUnlessEditing;
        //再次编辑是否清空之前文字
        textField.clearsOnBeginEditing = YES;
        //默认文字:text
        textField.text = @"123456789";
        
        //设置左视图:leftView
        //位置无效
        UIView *view = [[UIView alloc] initWithFrame:CGRectMake(1000, 800, 40, 40)];
        view.backgroundColor = [UIColor orangeColor];
        textField.leftView = view;
        //设置左视图出现状态
        textField.leftViewMode = UITextFieldViewModeAlways;
        //设置右视图:rightView
        //如果存在右视图,一键删除按钮就不存在
        UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
        view1.backgroundColor = [UIColor redColor];
        //textField.rightView = view1;
        //textField.rightViewMode = UITextFieldViewModeAlways;
        
        /*同一个视图不要放到不同位置*/
        //键盘上面的自定义视图
        //位置无效  宽无效
        //可以在inputView上面再添加子视图
        UIView *inputView = [[UIView alloc] initWithFrame:CGRectMake(120, 7880, 320, 40)];
        inputView.backgroundColor = [UIColor cyanColor];
        //textField.inputAccessoryView = inputView;
        
       //自定义键盘:inputView
        UIView *input = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 216)];
        input.backgroundColor = [UIColor purpleColor];
         //UIButton
         //textField.inputView = input;
         /********!!!!!delegate!!!!!!*******/
        textField.delegate = self;
        //让输入框开始响应:光标出现,键盘出现
        [textField becomeFirstResponder];
        [self.view addSubview:textField];
    }
    
    #pragma mark - UITextFieldDelegate
    //return键的协议方法  *****
    - (BOOL)textFieldShouldReturn:(UITextField *)textField{
        //一般都在这里收回键盘
        //让输入框失去第一响应:收回键盘、光标消失
        [textField resignFirstResponder];
        
        return YES;
    }
    //一键删除对应的协议方法  ***
    - (BOOL)textFieldShouldClear:(UITextField *)textField{
        //默认是YES
        //NO:一键删除无效
        
        if (textField.text.length == 3) {
            return NO;
        }
        
        return YES;
    }
    
    //输入框是否可以开始编辑  ***
    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
        //YES:可以编辑   NO:不可以编辑
        return YES;
    }
    //输入框是否可以结束编辑  ***
    - (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
        //YES:可以结束编辑   NO:不可以结束编辑
    //    if (textField.text.length < 11) {
    //        return NO;
    //    }
        return YES;
    }
    
    //当输入框文字出现变化就响应的方法  **
    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
        //range  :  location   length
        NSLog(@"%lu   %lu",(unsigned long)range.length, (unsigned long)range.location);
        NSLog(@"%@",string);
        
        return YES;
    }
    
    //输入框开始响应就调用的方法  ****
    - (void)textFieldDidBeginEditing:(UITextField *)textField{
        NSLog(@"begin");
    }
    //输入框结束响应就调用的方法   *****
    - (void)textFieldDidEndEditing:(UITextField *)textField{
        
        //获取输入框里面的文字内容:text
        NSLog(@"%@",textField.text);
        
        NSLog(@"end");
    }
    
    @end
    
    

    UITextView

    #import "ViewController.h"
    
    @interface ViewController ()<UITextViewDelegate>
    
    @property (nonatomic, strong) UILabel *placeholderLabel;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        
        //关闭自动布局
        self.automaticallyAdjustsScrollViewInsets = NO;
        
        /*******UITextView*********/
        //UITextView->UIScrollView->UIView
        //无:提示文字、密文、边框、一键删除、自适应文字大小、左右视图
        //实例化
        UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(50, 100, 220, 100)];
        //背景颜色
        textView.backgroundColor = [UIColor grayColor];
        //更改字体颜色
        textView.textColor = [UIColor redColor];
        //更改字体大小
        textView.font = [UIFont systemFontOfSize:22.0];
        //更改对齐方式
        textView.textAlignment = NSTextAlignmentLeft;
        //更改键盘颜色
        textView.keyboardAppearance = UIKeyboardAppearanceDark;
        //更改键盘类型
        textView.keyboardType = UIKeyboardTypeEmailAddress;
        //自动大写
        textView.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
        //自动纠错
        textView.autocorrectionType = UITextAutocorrectionTypeYes;
        //return键样式
        textView.returnKeyType = UIReturnKeyDone;
        //默认文字
        textView.text = @"";
        //键盘上面的自定义视图
        UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 40)];
        view.backgroundColor = [UIColor orangeColor];
        textView.inputAccessoryView = view;
        //自定义键盘  inputView
        
        //是否允许滑动
        textView.scrollEnabled = YES;
        //隐藏垂直滑块
        textView.showsVerticalScrollIndicator = NO;
        //是否可以编辑
        textView.editable = YES;
        //突出文字  高亮
        textView.dataDetectorTypes = UIDataDetectorTypeAll;
        
        /*******!!!delegate!!!!******/
        textView.delegate = self;
        
        //添加
        [self.view addSubview:textView];
        
        
        //placeholder的功能
        _placeholderLabel = [[UILabel alloc] initWithFrame:CGRectMake(5, 0, 210, 40)];
        _placeholderLabel.text = @"请输入文字";
        _placeholderLabel.textColor = [UIColor lightGrayColor];
        _placeholderLabel.font = [UIFont systemFontOfSize:22.0];
        [textView addSubview:_placeholderLabel];
        
        if (textView.text.length != 0) {
            _placeholderLabel.hidden = YES;
        }else{
            _placeholderLabel.hidden = NO;
        }
    }
    
    #pragma mark - UITextViewDelegate
    //是否可以开始输入文字
    - (BOOL)textViewShouldBeginEditing:(UITextView *)textView{
        
        return YES;
    }
    //是否可以结束编辑
    - (BOOL)textViewShouldEndEditing:(UITextView *)textView{
        return YES;
    }
    //网址是否可以连接
    - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange{
        return YES;
    }
    //文字出现改变就执行:文字能否更改
    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
        //点击return收回键盘
        if ([text isEqualToString:@"\n"]) {
            [textView resignFirstResponder];
        }
        return YES;
    }
    //- (BOOL)textView:(UITextView *)textView shouldInteractWithTextAttachment:(NSTextAttachment *)textAttachment inRange:(NSRange)characterRange{
    //    
    //}
    
    //输入框开始响应就执行
    - (void)textViewDidBeginEditing:(UITextView *)textView{
        
    }
    //输入框失去响应就执行
    - (void)textViewDidEndEditing:(UITextView *)textView{
        
    }
    //文字出现改变就执行
    - (void)textViewDidChange:(UITextView *)textView{
        
        if (textView.text.length != 0) {
            _placeholderLabel.hidden = YES;
        }else{
            _placeholderLabel.hidden = NO;
        }
        
    }
    
    //更改文字
    //- (void)textViewDidChangeSelection:(UITextView *)textView{
    //    textView.text = @"123yu";
    //}
    
    @end
    
    

    相关文章

      网友评论

        本文标题:UITextField 和 UITextView

        本文链接:https://www.haomeiwen.com/subject/iowjjttx.html