菜单

基础控件

2019年9月12日 - 理财婆高手论坛
基础控件

继基础控件UITextField之后,期待的UITextView详细介绍–>>保证你有意外收获,如有问题欢迎指点。。

#######效果

图片 1UITextView.png

#######代码

 // 初始化输入框并设置位置和大小 UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(10, 100, [UIScreen mainScreen].bounds.size.width - 20, 180)]; // 设置预设文本 textView.text = @"您的意见是我们前进的最大动力,谢谢!"; // 设置文本字体 textView.font = [UIFont fontWithName:@"Arial" size:16.5f]; // 设置文本颜色 textView.textColor = [UIColor colorWithRed:51/255.0f green:51/255.0f blue:51/255.0f alpha:1.0f]; // 设置文本框背景颜色 textView.backgroundColor = [UIColor whiteColor]; // 设置文本对齐方式 textView.textAlignment = NSTextAlignmentLeft; // 设置自动纠错方式 textView.autocorrectionType = UITextAutocorrectionTypeNo; //外框 textView.layer.borderColor = [UIColor redColor].CGColor; textView.layer.borderWidth = 1; textView.layer.cornerRadius =5; // 设置自动大写方式 textView.autocapitalizationType = UITextAutocapitalizationTypeNone; // 自动大写方式有以下几种: // enum { // UITextAutocapitalizationTypeNone, 不自动大写 // UITextAutocapitalizationTypeWords, 单词首字母大写 // UITextAutocapitalizationTypeSentences, 句子的首字母大写 // UITextAutocapitalizationTypeAllCharacters, 所有字母都大写 // } UITextAutocapitalizationType; // 设置键盘的样式 textView.keyboardType = UIKeyboardTypeDefault; // 键盘样式有以下几种: // enum { // UIKeyboardTypeDefault, 默认键盘,支持所有字符 // UIKeyboardTypeASCIICapable, 支持ASCII的默认键盘 // UIKeyboardTypeNumbersAndPunctuation, 标准电话键盘,支持+*#字符 // UIKeyboardTypeURL, 只支持URL字符的URL键盘,支持.com按钮 // UIKeyboardTypeNumberPad, 数字键盘 // UIKeyboardTypePhonePad, 电话键盘 // UIKeyboardTypeNamePhonePad, 支持输入人名的电话键盘 // UIKeyboardTypeEmailAddress, 电子邮件键盘 // UIKeyboardTypeDecimalPad, 有数字和小数点的数字键盘 // UIKeyboardTypeTwitter, 优化的键盘,方便输入@、#字符 // UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // } UIKeyboardType; // 设置return键样式 textView.returnKeyType = UIReturnKeyDefault; // return键有以下几种样式: // enum { // UIReturnKeyDefault, 默认,灰色按钮,标有Return // UIReturnKeyGo, 标有Go的蓝色按钮 // UIReturnKeyGoogle, 标有Google的蓝色按钮,用于搜索 // UIReturnKeyJoin, 标有Join的蓝色按钮 // UIReturnKeyNext, 标有Next的蓝色按钮 // UIReturnKeyRoute, 标有Route的蓝色按钮 // UIReturnKeySearch, 标有Search的蓝色按钮 // UIReturnKeySend, 标有Send的蓝色按钮 // UIReturnKeyYahoo, 标有Yahoo的蓝色按钮 // UIReturnKeyYahoo, 标有Yahoo的蓝色按钮 // UIReturnKeyEmergencyCall, 紧急呼叫按钮 // } UIReturnKeyType; // 设置是否可以拖动 textView.scrollEnabled = YES; // 设置代理 textView.delegate = self; //自适应高度 textView.autoresizingMask = UIViewAutoresizingFlexibleHeight; // 自定义文本框字数统计 count = [[UILabel alloc] initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width - 100, CGRectGetMaxY(textView.frame) +5, 60, 20)]; count.text = @"0/100"; count.textAlignment = NSTextAlignmentRight; count.font = [UIFont fontWithName:@"Arial" size:15.0f]; count.backgroundColor = [UIColor clearColor]; count.textColor = [UIColor redColor]; count.enabled = NO; [self.view addSubview:count]; [self.view addSubview:textView]; 

/** 将要开始编辑 @param textView textView @return BOOL */- textViewShouldBeginEditing:(UITextView *)textView{ return YES; }/** 开始编辑 @param textView textView */- textViewDidBeginEditing:(UITextView *)textView{ if ([textView.text isEqualToString:@"您的意见是我们前进的最大动力,谢谢!"]) { textView.text = @""; }}/** 将要结束编辑 @param textView textView @return BOOL */- textViewShouldEndEditing:(UITextView *)textView{ return YES; }/** 结束编辑 @param textView textView */-textViewDidEndEditing:(UITextView *)textView{ if (textView.text.length <1) { textView.text = @"您的意见是我们前进的最大动力,谢谢!"; } }/** 内容将要发生改变编辑 限制输入文本长度 监听TextView 点击了ReturnKey 按钮 @param textView textView @param range 范围 @param text text @return BOOL */- textView:(UITextView *)textView shouldChangeTextInRange:range replacementText:(NSString *)text{ if (range.location < 100) { return YES; } else if ([textView.text isEqualToString:@"\n"]) { //这里写按了ReturnKey 按钮后的代码 return NO; } if (textView.text.length == 100) { return NO; } return YES; }/** 内容发生改变编辑 自定义文本框placeholder 有时候我们要控件自适应输入的文本的内容的高度,只要在textViewDidChange的代理方法中加入调整控件大小的代理即可 @param textView textView */- textViewDidChange:(UITextView *)textView{ count.text = [NSString stringWithFormat:@"%lu/100", textView.text.length ];}

注释

用过TextView的童鞋都知道TextView是没有 placeholder 上面的做法是利用textView的text做了一个placeholder 但是效果不是很好。。一开始进入这个页面可以看到 placeholder 的提示 但是写了以后 删除所有数据 此时为空了 但是placeholder 不显示了 这个只适用于第一次显示 不好 下面要实现和textField 一样的需要自己重新继承TextView 写一个 。。代码如下–有兴趣的童鞋可以了解下 TextViewGitHubDemo

#######TextView 自定义的带placeholder 效果

图片 21.gif

#######TextView 自定义的带placeholder 代码 继承TextView .H

#import <UIKit/UIKit.h>@interface CBBTextView : UITextView@property(nonatomic) UILabel *placeHolderLabel;@property(nonatomic) NSString *placeholder;@property(nonatomic) UIColor *placeholderColor;@end

#######TextView 自定义的带placeholder 代码 继承TextView .M

#import "CBBTextView.h"@implementation CBBTextView- (instancetype)initWithCoder:(NSCoder *)aDecoder{ self = [super initWithCoder:aDecoder]; if  { [self setUpSubViews]; } return self;}- setUpSubViews{ self.text = @""; [self setPlaceholder:@""]; [self setPlaceholderColor:[UIColor lightGrayColor]]; }- setText:(NSString *)text { [super setText:text];}- drawRect:rect{ [super drawRect:rect]; if( [[self placeholder] length] > 0 ) { if ( _placeHolderLabel == nil ) { _placeHolderLabel = [[UILabel alloc] initWithFrame:CGRectMake(8,8,self.bounds.size.width - 16,0)]; _placeHolderLabel.lineBreakMode = UILineBreakModeWordWrap; _placeHolderLabel.numberOfLines = 0; _placeHolderLabel.font = self.font; _placeHolderLabel.backgroundColor = [UIColor clearColor]; _placeHolderLabel.textColor = self.placeholderColor; _placeHolderLabel.alpha = 0; _placeHolderLabel.tag = 999; [self addSubview:_placeHolderLabel]; } _placeHolderLabel.text = self.placeholder; [_placeHolderLabel sizeToFit]; [self sendSubviewToBack:_placeHolderLabel]; } if( [[self text] length] == 0 && [[self placeholder] length] > 0 ) { [[self viewWithTag:999] setAlpha:1]; }}@end

#######TextView 自定义的带placeholder 代码 控制器

#import "ViewController.h"#import "CBBTextView.h"@interface ViewController ()<UITextViewDelegate>@end@implementation ViewController- viewDidLoad { [super viewDidLoad]; CBBTextView * textView =[[CBBTextView alloc] initWithFrame:CGRectMake(10, 100, [UIScreen mainScreen].bounds.size.width - 20, 180)]; textView.backgroundColor = [UIColor whiteColor]; textView.placeholderColor = [UIColor lightGrayColor]; textView.placeholder = @"您的意见是我们前进的最大动力,谢谢!"; textView.font = [UIFont systemFontOfSize:17]; textView.delegate = self; textView.layer.borderWidth =1; textView.layer.borderColor =[UIColor redColor].CGColor; [textView.layer setCornerRadius:10.0f]; [self.view addSubview:textView]; }- textViewDidChange:(CBBTextView *)textView{ if([textView.placeholder length] == 0) { return; } if([textView.placeholder length] == 0) { [textView.placeHolderLabel setAlpha:1]; } else { [textView.placeHolderLabel setAlpha:0]; } if ([textView.text isEqualToString:@""]) { [textView.placeHolderLabel setAlpha:1]; }}@end

未完待续。。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图