官方UITextField
@interface UITextField : UIControl <UITextInput, NSCoding> @property(nonatomic,copy) NSString *text; // 文本 default is nil @property(nonatomic,copy) NSAttributedString *attributedText NS_AVAILABLE_IOS(6_0); // default is nil @property(nonatomic,retain) UIColor *textColor; // 文本颜色 default is nil. use opaque black @property(nonatomic,retain) UIFont *font; // 文本字体 default is nil. use system font 12 pt @property(nonatomic) NSTextAlignment textAlignment; // 文本的排版 default is NSLeftTextAlignment @property(nonatomic) UITextBorderStyle borderStyle; // 边框的样式 default is UITextBorderStyleNone. If set to UITextBorderStyleRoundedRect, custom background images are ignored. @property(nonatomic,copy) NSDictionary *defaultTextAttributes NS_AVAILABLE_IOS(7_0); //文本属性 用字典填充 applies attributes to the full range of text. Unset attributes act like default values. @property(nonatomic,copy) NSString *placeholder; // 文本填充 default is nil. string is drawn 70% gray @property(nonatomic,copy) NSAttributedString *attributedPlaceholder NS_AVAILABLE_IOS(6_0); // default is nil @property(nonatomic) BOOL clearsOnBeginEditing; // 开始编辑的时候清空 default is NO which moves cursor to location clicked. if YES, all text cleared @property(nonatomic) BOOL adjustsFontSizeToFitWidth; //自适应文本到宽度 default is NO. if YES, text will shrink to minFontSize along baseline @property(nonatomic) CGFloat minimumFontSize; //最小的文本大小 default is 0.0. actual min may be pinned to something readable. used if adjustsFontSizeToFitWidth is YES @property(nonatomic,assign) id<UITextFieldDelegate> delegate; // 协议 default is nil. weak reference @property(nonatomic,retain) UIImage *background; // 背景 default is nil. draw in border rect. image should be stretchable @property(nonatomic,retain) UIImage *disabledBackground; // 禁用的背景 default is nil. ignored if background not set. image should be stretchable @property(nonatomic,readonly,getter=isEditing) BOOL editing; //是否被编辑 @property(nonatomic) BOOL allowsEditingTextAttributes NS_AVAILABLE_IOS(6_0); // default is NO. allows editing text attributes with style operations and pasting rich text @property(nonatomic,copy) NSDictionary *typingAttributes NS_AVAILABLE_IOS(6_0); // automatically resets when the selection changes // You can supply custom views which are displayed at the left or right // sides of the text field. Uses for such views could be to show an icon or // a button to operate on the text in the field in an application-defined // manner. // // A very common use is to display a clear button on the right side of the // text field, and a standard clear button is provided. Note: if the clear // button overlaps one of the other views, the clear button will be given // precedence. @property(nonatomic) UITextFieldViewMode clearButtonMode; // sets when the clear button shows up. default is UITextFieldViewModeNever @property(nonatomic,retain) UIView *leftView; // e.g. magnifying glass @property(nonatomic) UITextFieldViewMode leftViewMode; // sets when the left view shows up. default is UITextFieldViewModeNever @property(nonatomic,retain) UIView *rightView; // e.g. bookmarks button @property(nonatomic) UITextFieldViewMode rightViewMode; // sets when the right view shows up. default is UITextFieldViewModeNever // drawing and positioning overrides - (CGRect)borderRectForBounds:(CGRect)bounds; - (CGRect)textRectForBounds:(CGRect)bounds; - (CGRect)placeholderRectForBounds:(CGRect)bounds; - (CGRect)editingRectForBounds:(CGRect)bounds; - (CGRect)clearButtonRectForBounds:(CGRect)bounds; - (CGRect)leftViewRectForBounds:(CGRect)bounds; - (CGRect)rightViewRectForBounds:(CGRect)bounds; - (void)drawTextInRect:(CGRect)rect; - (void)drawPlaceholderInRect:(CGRect)rect; // Presented when object becomes first responder. If set to nil, reverts to following responder chain. If // set while first responder, will not take effect until reloadInputViews is called. @property (readwrite, retain) UIView *inputView; //键盘的view @property (readwrite, retain) UIView *inputAccessoryView; //想在键盘上展示一个自定义的view时,你就可以设置该属性 @property(nonatomic) BOOL clearsOnInsertion NS_AVAILABLE_IOS(6_0); // defaults to NO. if YES, the selection UI is hidden, and inserting text will replace the contents of the field. changing the selection will automatically set this to NO. @end基本使用:
UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(100, 100, 200, 50)]; textField.tag = 10; textField.borderStyle = UITextBorderStyleRoundedRect;//
#pragma mark - 关于文本的设置 -(void)textSetting { //找到文本输入框 UITextField *textField = (id)[self.view viewWithTag:10]; //设置文字 // textField.text = @"我是文本框"; //设置文字颜色 textField.textColor = [UIColor redColor]; //设置文字字体 textField.font = [UIFont boldSystemFontOfSize:25]; //设置文字对齐方式,默认居左 textField.textAlignment = NSTextAlignmentRight; /** NSTextAlignmentLeft NSTextAlignmentRight NSTextAlignmentCenter */ //设置文字自适应宽度 textField.adjustsFontSizeToFitWidth = YES; //设置允许的最小字体,在adjustsFontSizeToFitWidth = YES,才有效 textField.minimumFontSize = 17; //设置提示文字 textField.placeholder = @"请输入用户名"; //设置是否使用密文输入 // textField.secureTextEntry = YES; //设置开始编辑时,清除已有的文字 textField.clearsOnBeginEditing = YES; }
#pragma mark - 关于样式的设置 -(void)styleSetting { //找到已经创建好的UITextField UITextField *textField = (UITextField *)[self.view viewWithTag:10]; //设置背景颜色 // textField.backgroundColor = [UIColor cyanColor]; //设置边框样式 textField.borderStyle = UITextBorderStyleNone; /** UITextBorderStyleNone 无边框 UITextBorderStyleLine 线性矩形 UITextBorderStyleBezel 尖角矩形 UITextBorderStyleRoundedRect 圆角矩形 */ //通过layer设置圆角 textField.layer.cornerRadius = 10; textField.layer.borderColor = [UIColor lightGrayColor].CGColor; textField.layer.borderWidth = 1; //设置是否显示清除按钮 textField.clearButtonMode = UITextFieldViewModeUnlessEditing; //显示清除按钮的前提都是要有文字 /** UITextFieldViewModeNever, //从不显示 UITextFieldViewModeWhileEditing, //编辑时显示 UITextFieldViewModeUnlessEditing, //非编辑时显示 UITextFieldViewModeAlways //一直显示 */ //成为第一响应者 //第一响应者,一个界面可能有多个可输入的控件,哪一个正在编辑哪一个就是第一响应者 [textField becomeFirstResponder]; //设置背景图片 textField.background = [UIImage imageNamed:@"1.png"]; //设置不可编辑时的背景图 textField.disabledBackground = [UIImage imageNamed:@"5.png"]; //设置是否可以编辑,YES 可以编辑,NO不可以 // textField.enabled = NO; UIView *leftView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)]; leftView.backgroundColor = [UIColor magentaColor]; //设置左视图,所有直接或间接继承于UIView的类的对象,都可以作为左视图 textField.leftView = leftView; //设置左视图的显示模式 textField.leftViewMode = UITextFieldViewModeAlways; UIView *rightView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)]; rightView.backgroundColor = [UIColor yellowColor]; //设置右视图 textField.rightView = rightView; //设置右视图的显示模式 textField.rightViewMode = UITextFieldViewModeAlways; }
创建一个协议:
@protocol KeyBoardViewDelegate <NSObject> -(void)inputText:(NSString *)text; @end
创建View
@interface KeyBoardView : UIView @property(nonatomic, assign) id <KeyBoardViewDelegate> delegate; @end
@implementation KeyBoardView -(instancetype)init { self = [super init]; if (self) { CGSize size = [UIScreen mainScreen].bounds.size; self.frame = CGRectMake(0, 0, size.width, 258); [self createButtons]; } return self; } -(void)createButtons { NSArray *array = @[@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"0",@"+",@"-"]; int i = 0; for (NSString *title in array) { //遍历标题,创建按钮 UIButton *button = [[UIButton alloc]init]; button.backgroundColor = [UIColor lightGrayColor]; button.frame = CGRectMake(10 + (i % 3) * 90, 10 + (i / 3) * 50, 85, 45); [button setTitle:title forState:UIControlStateNormal]; [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; button.titleLabel.font = [UIFont boldSystemFontOfSize:30]; [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:button]; i++; } } -(void)buttonClicked:(UIButton *)sender { //代理存在,且能响应inputText:这个方法 if(_delegate && [_delegate respondsToSelector:@selector(inputText:)]) { [_delegate inputText:sender.titleLabel.text]; } } @end