iOS开发篇——UITextField

来源:互联网 发布:淘宝网智能手机 编辑:程序博客网 时间:2024/06/15 22:46

官方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
基本使用:
[objc] view plain copy print?
  1. UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(10010020050)];  
  2. textField.tag = 10;  
  3. textField.borderStyle = UITextBorderStyleRoundedRect;//  

[objc] view plain copy print?
  1. #pragma mark - 关于文本的设置  
  2. -(void)textSetting  
  3. {  
  4.     //找到文本输入框  
  5.     UITextField *textField = (id)[self.view viewWithTag:10];  
  6.     //设置文字  
  7. //    textField.text = @"我是文本框";  
  8.     //设置文字颜色  
  9.     textField.textColor = [UIColor redColor];  
  10.     //设置文字字体  
  11.     textField.font = [UIFont boldSystemFontOfSize:25];  
  12.     //设置文字对齐方式,默认居左  
  13.     textField.textAlignment = NSTextAlignmentRight;  
  14.     /** 
  15.      NSTextAlignmentLeft 
  16.      NSTextAlignmentRight 
  17.      NSTextAlignmentCenter 
  18.      */  
  19.     //设置文字自适应宽度  
  20.     textField.adjustsFontSizeToFitWidth = YES;  
  21.     //设置允许的最小字体,在adjustsFontSizeToFitWidth = YES,才有效  
  22.     textField.minimumFontSize = 17;  
  23.       
  24.     //设置提示文字  
  25.     textField.placeholder = @"请输入用户名";  
  26.     //设置是否使用密文输入  
  27. //    textField.secureTextEntry = YES;  
  28.       
  29.     //设置开始编辑时,清除已有的文字  
  30.     textField.clearsOnBeginEditing = YES;  
  31. }  
[objc] view plain copy print?
  1. #pragma mark - 关于样式的设置  
  2.   
  3. -(void)styleSetting  
  4. {  
  5.     //找到已经创建好的UITextField  
  6.     UITextField *textField = (UITextField *)[self.view viewWithTag:10];  
  7.     //设置背景颜色  
  8. //    textField.backgroundColor = [UIColor cyanColor];  
  9.     //设置边框样式  
  10.     textField.borderStyle = UITextBorderStyleNone;  
  11.     /** 
  12.      UITextBorderStyleNone 
  13.      无边框 
  14.      UITextBorderStyleLine 
  15.      线性矩形 
  16.      UITextBorderStyleBezel 
  17.      尖角矩形 
  18.      UITextBorderStyleRoundedRect 
  19.      圆角矩形 
  20.      */  
  21.     //通过layer设置圆角  
  22.     textField.layer.cornerRadius = 10;  
  23.     textField.layer.borderColor = [UIColor lightGrayColor].CGColor;  
  24.     textField.layer.borderWidth = 1;  
  25.       
  26.     //设置是否显示清除按钮  
  27.     textField.clearButtonMode = UITextFieldViewModeUnlessEditing;  
  28.     //显示清除按钮的前提都是要有文字  
  29.     /** 
  30.      UITextFieldViewModeNever, 
  31.      //从不显示 
  32.      UITextFieldViewModeWhileEditing, 
  33.      //编辑时显示 
  34.      UITextFieldViewModeUnlessEditing, 
  35.      //非编辑时显示 
  36.      UITextFieldViewModeAlways 
  37.      //一直显示 
  38.      */  
  39.       
  40.     //成为第一响应者  
  41.     //第一响应者,一个界面可能有多个可输入的控件,哪一个正在编辑哪一个就是第一响应者  
  42.     [textField becomeFirstResponder];  
  43.       
  44.     //设置背景图片  
  45.     textField.background = [UIImage imageNamed:@"1.png"];  
  46.     //设置不可编辑时的背景图  
  47.     textField.disabledBackground = [UIImage imageNamed:@"5.png"];  
  48.     //设置是否可以编辑,YES 可以编辑,NO不可以  
  49. //    textField.enabled = NO;  
  50.     UIView *leftView = [[UIView alloc]initWithFrame:CGRectMake(005050)];  
  51.     leftView.backgroundColor = [UIColor magentaColor];  
  52.     //设置左视图,所有直接或间接继承于UIView的类的对象,都可以作为左视图  
  53.     textField.leftView = leftView;  
  54.     //设置左视图的显示模式  
  55.     textField.leftViewMode = UITextFieldViewModeAlways;  
  56.       
  57.     UIView *rightView = [[UIView alloc]initWithFrame:CGRectMake(005050)];  
  58.     rightView.backgroundColor = [UIColor yellowColor];  
  59.     //设置右视图  
  60.     textField.rightView = rightView;  
  61.     //设置右视图的显示模式  
  62.     textField.rightViewMode = UITextFieldViewModeAlways;  
  63. }  

自定制输入键盘

创建一个协议:

[objc] view plain copy print?
  1. @protocol KeyBoardViewDelegate <NSObject>  
  2.   
  3.   
  4. -(void)inputText:(NSString *)text;  
  5.   
  6. @end  

创建View

[objc] view plain copy print?
  1. @interface KeyBoardView : UIView  
  2.   
  3. @property(nonatomic, assign) id <KeyBoardViewDelegate> delegate;  
  4.   
  5. @end  
[objc] view plain copy print?
  1. @implementation KeyBoardView  
  2.   
  3. -(instancetype)init  
  4. {  
  5.     self = [super init];  
  6.     if (self) {  
  7.         CGSize size = [UIScreen mainScreen].bounds.size;  
  8.         self.frame = CGRectMake(00, size.width258);  
  9.         [self createButtons];  
  10.     }  
  11.     return self;  
  12.       
  13. }  
  14.   
  15. -(void)createButtons  
  16. {  
  17.     NSArray *array = @[@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"0",@"+",@"-"];  
  18.     int i = 0;  
  19.     for (NSString *title in  array)  
  20.     {  
  21.         //遍历标题,创建按钮  
  22.         UIButton *button = [[UIButton alloc]init];  
  23.         button.backgroundColor = [UIColor lightGrayColor];  
  24.         button.frame = CGRectMake(10 + (i % 3) * 9010 + (i / 3) * 508545);  
  25.         [button setTitle:title forState:UIControlStateNormal];  
  26.         [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];  
  27.         button.titleLabel.font = [UIFont boldSystemFontOfSize:30];  
  28.         [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];  
  29.         [self addSubview:button];  
  30.         i++;  
  31.     }  
  32. }  
  33.   
  34. -(void)buttonClicked:(UIButton *)sender  
  35. {  
  36.     //代理存在,且能响应inputText:这个方法  
  37.     if(_delegate && [_delegate respondsToSelector:@selector(inputText:)])  
  38.     {  
  39.         [_delegate inputText:sender.titleLabel.text];  
  40.     }  
  41. }  
  42. @end



0 0