iOS UITextField属性

  1. //初始化textfield并设置位置及大小  
  2.   UITextField *text [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];  
  3.     
  4. //设置边框样式,只有设置了才会显示边框样式    
  5.   text.borderStyle UITextBorderStyleRoundedRect;  
  6.   typedef enum  
  7.     UITextBorderStyleNone,   
  8.     UITextBorderStyleLine,  
  9.     UITextBorderStyleBezel,  
  10.     UITextBorderStyleRoundedRect    
  11.   UITextBorderStyle;  
  12.      
  13. //设置输入框的背景颜色,此时设置为白色 如果使用了自定义的背景图片边框会被忽略掉    
  14.    text.backgroundColor [UIColor whiteColor];  
  15.     
  16. //设置背景  
  17.   text.background [UIImage imageNamed:@"dd.png"];  
  18.     
  19. //设置背景   
  20.   text.disabledBackground [UIImage imageNamed:@"cc.png"];  
  21. //当输入框没有内容时,水印提示 提示内容为password  
  22.   text.placeholder @"password" 
  23.     
  24. //设置输入框内容的字体样式和大小  
  25.   text.font [UIFont fontWithName:@"Arial" size:20.0f];  
  26.     
  27. //设置字体颜色  
  28.   text.textColor [UIColor redColor];  
  29.     
  30. //输入框中是否有个叉号,在什么时候显示,用于一次性删除输入框中的内容  
  31.   text.clearButtonMode UITextFieldViewModeAlways;  
  32.     
  33. typedef enum  
  34.     UITextFieldViewModeNever 重不出现  
  35.     UITextFieldViewModeWhileEditing, 编辑时出现  
  36.     UITextFieldViewModeUnlessEditing,  除了编辑外都出现  
  37.     UITextFieldViewModeAlway  一直出现  
  38. UITextFieldViewMode;  
  39.     
  40. //输入框中一开始就有的文字  
  41.   text.text @"一开始就在输入框的文字" 
  42.     
  43. //每输入一个字符就变成点 用语密码输入  
  44.   text.secureTextEntry YES;  
  45.     
  46. //是否纠错  
  47.   text.autocorrectionType UITextAutocorrectionTypeNo;  
  48.     
  49. typedef enum  
  50.     UITextAutocorrectionTypeDefault, 默认  
  51.     UITextAutocorrectionTypeNo,   不自动纠错  
  52.     UITextAutocorrectionTypeYes,  自动纠错  
  53. UITextAutocorrectionType 
  54.     
  55. //再次编辑就清空  
  56.   text.clearsOnBeginEditing YES;   
  57.     
  58. //内容对齐方式  
  59.   text.textAlignment UITextAlignmentLeft;  
  60.     
  61. //内容的垂直对齐方式  UITextField继承自UIControl,此类中有一个属性contentVerticalAlignment  
  62.   text.contentVerticalAlignment UIControlContentVerticalAlignmentCenter;  
  63.     
  64. //设置为YES时文本会自动缩小以适应文本窗口大小.默认是保持原来大小,而让长文本滚动    
  65.   textFied.adjustsFontSizeToFitWidtYES;  
  66.     
  67. //设置自动缩小显示的最小字体大小  
  68.   text.minimumFontSize 20;  
  69.     
  70. //设置键盘的样式  
  71.   text.keyboardType UIKeyboardTypeNumberPad;  
  72.     
  73. typedef enum  
  74.     UIKeyboardTypeDefault,       默认键盘,支持所有字符           
  75.     UIKeyboardTypeASCIICapable,  支持ASCII的默认键盘  
  76.     UIKeyboardTypeNumbersAndPunctuation,  标准电话键盘,支持+*#字符  
  77.     UIKeyboardTypeURL,            URL键盘,支持.com按钮 只支持URL字符  
  78. UIKeyboardTypeNumberPad,              数字键盘  
  79. UIKeyboardTypePhonePad,   
  80.     电话键盘  
  81.     UIKeyboardTypeNamePhonePad,   电话键盘,也支持输入人名  
  82. UIKeyboardTypeEmailAddress,   用于输入电子 邮件地址的键盘       
  83. UIKeyboardTypeDecimalPad    数字键盘 有数字和小数点  
  84.     UIKeyboardTypeTwitter,        优化的键盘,方便输入@、#字符  
  85.     UIKeyboardTypeAlphabet UIKeyboardTypeASCIICapable,   
  86. UIKeyboardType;  
  87.     
  88. //首字母是否大写  
  89.   text.autocapitalizationType UITextAutocapitalizationTypeNone;  
  90.     
  91. typedef enum  
  92.     UITextAutocapitalizationTypeNone, 不自动大写  
  93.     UITextAutocapitalizationTypeWords,  单词首字母大写  
  94.     UITextAutocapitalizationTypeSentences,  句子的首字母大写  
  95.     UITextAutocapitalizationTypeAllCharacters, 所有字母都大写  
  96. UITextAutocapitalizationType;  
  97.     
  98. //return键变成什么键  
  99.   text.returnKeyType =UIReturnKeyDone;  
  100.     
  101. typedef enum  
  102.     UIReturnKeyDefault, 默认 灰色按钮,标有Return  
  103.     UIReturnKeyGo,      标有Go的蓝色按钮  
  104.     UIReturnKeyGoogle,  
  105. 标有Google的蓝色按钮,用语搜索  
  106.     UIReturnKeyJoin,  
  107. 标有Join的蓝色按钮  
  108.     UIReturnKeyNext,  
  109. 标有Next的蓝色按钮  
  110.     UIReturnKeyRoute,  
  111. 标有Route的蓝色按钮  
  112.     UIReturnKeySearch,  
  113. 标有Search的蓝色按钮  
  114.     UIReturnKeySend,  
  115. 标有Send的蓝色按钮  
  116.     UIReturnKeyYahoo,  
  117. 标有Yahoo的蓝色按钮  
  118.     UIReturnKeyYahoo,  
  119. 标有Yahoo的蓝色按钮  
  120.     UIReturnKeyEmergencyCall紧急呼叫按钮  
  121. UIReturnKeyType;  
  122.     
  123. //键盘外观  
  124. textView.keyboardAppearance=UIKeyboardAppearanceDefault;  
  125. typedef enum  
  126. UIKeyboardAppearanceDefault, 默认外观,浅灰色  
  127. UIKeyboardAppearanceAlert,     深灰 石墨色  
  128.     
  129. UIReturnKeyType;  
  130.     
  131.     
  132. //设置代理 用于实现协议  
  133.   text.delegate self;  
  134.     
  135. //把textfield加到视图中  
  136.   [self.window addSubview:text];  
  137.     
  138. //最右侧加图片是以下代码   左侧类似  
  139.     UIImageView *image=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];  
  140.     text.rightView=image;  
  141.     text.rightViewMode UITextFieldViewModeAlways;   
  142.     
  143. typedef enum  
  144.     UITextFieldViewModeNever 
  145.     UITextFieldViewModeWhileEditing,  
  146.     UITextFieldViewModeUnlessEditing,  
  147.     UITextFieldViewModeAlway 
  148. UITextFieldViewMode;  
  149.     
  150.     
  151. //按return键键盘往下收  becomeFirstResponder  
  152.     
  153. 类要采用UITextFieldDelegate协议  
  154.     
  155. text.delegate self;  声明text的代理是我,我会去实现把键盘往下收的方法 这个方法在UITextFieldDelegate里所以我们要采用UITextFieldDelegate这个协议  
  156.     
  157. (BOOL)textFieldShouldReturn:(UITextField *)textField  
  158.  
  159.     [text resignFirstResponder];    //主要是[receiver resignFirstResponder]在哪调用就能把receiver对应的键盘往下收  
  160.     return YES;  
  161.  
  162.     
  163.     
  164. 重写绘制行为  
  165. 除了UITextField对象的风格选项,你还可以定制化UITextField对象,为他添加许多不同的重写方法,来改变文本字段的显示行为。这些方法都会返回一个CGRect结构,制定了文本字段每个部件的边界范围。以下方法都可以重写。  
  166.     
  167. – textRectForBounds:        
  168. //重写来重置文字区域  
  169. – drawTextInRect:           
  170.     
  171. //改变绘文字属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.  
  172. – placeholderRectForBounds:    
  173. //重写来重置占位符区域  
  174. – drawPlaceholderInRect:    
  175. //重写改变绘制占位符属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.  
  176. – borderRectForBounds:    
  177. //重写来重置边缘区域  
  178. – editingRectForBounds:    
  179. //重写来重置编辑区域  
  180. – clearButtonRectForBounds:    
  181. //重写来重置clearButton位置,改变size可能导致button的图片失真  
  182. – leftViewRectForBounds:  
  183. – rightViewRectForBounds:  
  184.     
  185. 委托方法  
  186.     
  187. (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{    
  188.        
  189. //返回一个BOOL值,指定是否循序文本字段开始编辑    
  190.        
  191.     return YES;    
  192.    
  193.     
  194. (void)textFieldDidBeginEditing:(UITextField *)textField{    
  195.  //开始编辑时触发,文本字段将成为first responder    
  196.    
  197.     
  198. (BOOL)textFieldShouldEndEditing:(UITextField *)textField{    
  199. //返回BOOL值,指定是否允许文本字段结束编辑,当编辑结束,文本字段会让出first responder    
  200.       
  201. //要想在用户结束编辑时阻止文本字段消失,可以返回NO    
  202.       
  203. //这对一些文本字段必须始终保持活跃状态的程序很有用,比如即时消息    
  204.       
  205.     return NO;    
  206.    
  207.     
  208. (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{    
  209. //当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。    
  210. //这对于想要加入撤销选项的应用程序特别有用    
  211. //可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。       
  212. //要防止文字被改变可以返回NO    
  213. //这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中    
  214.     
  215.      return YES;    
  216.    
  217.     
  218. (BOOL)textFieldShouldClear:(UITextField *)textField{    
  219.     
  220. //返回一个BOOL值指明是否允许根据用户请求清除内容    
  221. //可以设置在特定条件下才允许清除内容    
  222.     
  223.      return YES;    
  224.    
  225.     
  226. -(BOOL)textFieldShouldReturn:(UITextField *)textField{    
  227.     
  228. //返回一个BOOL值,指明是否允许在按下回车键时结束编辑    
  229.     
  230. //如果允许要调用resignFirstResponder 方法,这回导致结束编辑,而键盘会被收起[textField resignFirstResponder];  
  231. //查一下resign这个单词的意思就明白这个方法了    
  232.      return YES;    
  233.    
  234.     
  235.     
  236.     
  237. 通知  
  238. UITextField派生自UIControl,所以UIControl类中的通知系统在文本字段中也可以使用。除了UIControl类的标准事件,你还可以使用下列UITextField类特有的事件  
  239.     
  240. UITextFieldTextDidBeginEditingNotification  
  241. UITextFieldTextDidChangeNotification  
  242. UITextFieldTextDidEndEditingNotification  
  243. 当文本字段退出编辑模式时触发。通知的object属性存储了最终文本。  
  244.     
  245. 因为文本字段要使用键盘输入文字,所以下面这些事件发生时,也会发送动作通知  
  246.     
  247. UIKeyboardWillShowNotification   //键盘显示之前发送  
  248. UIKeyboardDidShowNotification    //键盘显示之后发送  
  249. UIKeyboardWillHideNotification   //键盘隐藏之前发送  
  250. UIKeyboardDidHideNotification    //键盘隐藏之后发送  
  251.    
  252.    
  253.    
  254.    
  255. 1、Text :设置文本框的默认文本。  
  256. 2、Placeholder : 可以在文本框中显示灰色的字,用于提示用户应该在这个文本框输入什么内容。当这个文本框中输入了数据时,用于提示的灰色的字将会自动消失。  
  257. 3、Background :  
  258. 4、Disabled : 若选中此项,用户将不能更改文本框内容。  
  259. 5、接下来是三个按钮,用来设置对齐方式。  
  260. 6、Border Style : 选择边界风格。  
  261. 7、Clear Button : 这是一个下拉菜单,你可以选择清除按钮什么时候出现,所谓清除按钮就是出一个现在文本框右边的小 ,你可以有以下选择:  
  262.     7.1 Never appears : 从不出现  
  263.     7.2 Appears while editing : 编辑时出现  
  264.     7.3 Appears unless editing :   
  265.     7.4 Is always visible : 总是可见  
  266. 8、Clear when editing begins : 若选中此项,则当开始编辑这个文本框时,文本框中之前的内容会被清除掉。比如,你现在这个文本框 中输入了 "What" ,之后去编辑文本框 B,若再回来编辑文本框 ,则其中的"What" 会被立即清除。  
  267. 9、Text Color : 设置文本框中文本的颜色。  
  268. 10、Font : 设置文本的字体与字号。  
  269. 11、Min Font Size : 设置文本框可以显示的最小字体(不过我感觉没什么用)  
  270. 12、Adjust To Fit : 指定当文本框尺寸减小时,文本框中的文本是否也要缩小。选择它,可以使得全部文本都可见,即使文本很长。但是这个选项要跟 Min Font Size 配合使用,文本再缩小,也不会小于设定的 Min Font Size 。  
  271. 接下来的部分用于设置键盘如何显示。  
  272. 13、Captitalization : 设置大写。下拉菜单中有四个选项:  
  273.     13.1 None : 不设置大写  
  274.     13.2 Words : 每个单词首字母大写,这里的单词指的是以空格分开的字符串  
  275.     13.3 Sentances : 每个句子的第一个字母大写,这里的句子是以句号加空格分开的字符串  
  276.     13.4 All Characters : 所以字母大写  
  277. 14、Correction : 检查拼写,默认是 YES 。  
  278. 15、Keyboard : 选择键盘类型,比如全数字、字母和数字等。  
  279. 16、Appearance:  
  280. 17、Return Key : 选择返回键,可以选择 Search 、 Return 、 Done 等。  
  281. 18、Auto-enable Return Key : 如选择此项,则只有至少在文本框输入一个字符后键盘的返回键才有效。  
  282. 19、Secure : 当你的文本框用作密码输入框时,可以选择这个选项,此时,字符显示为星号。  
  283.    
  284. 1.Alignment Horizontal 水平对齐方式  
  285. 2.Alignment Vertical 垂直对齐方式  
  286. 3.用于返回一个BOOL值  输入框是否 Selected(选中) Enabled(可用) Highlighted(高亮)  
  287.     
  288. 限制只能输入特定的字符  
  289.     
  290. (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{  
  291.     NSCharacterSet *cs;  
  292.     cs [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet];  
  293.     
  294.     NSString *filtered [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""]; //按cs分离出数组,数组按@""分离出字符串  
  295.     
  296.     BOOL canChange [string isEqualToString:filtered];  
  297.     
  298.     return canChange;  
  299.  
  300.     
  301. 上面那个NUMBERS是一个宏,可以在文件顶部定义:  
  302. #define NUMBERS @”0123456789n” (这个代表可以输入数字和换行,请注意这个n,如果不写这个,Done按键将不会触发,如果用在SearchBar中,将会不触发Search事件,因为你自己限制不让输入n,好惨,我在项目中才发现的。)  
  303. 所以,如果你要限制输入英文和数字的话,就可以把这个定义为:  
  304. #define kAlphaNum   @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″。  
  305. 当然,你还可以在以上方法return之前,做一提示的,比如提示用户只能输入数字之类的。如果你觉得有需要的话。  
  306.     
  307. 限制只能输入一定长度的字符  
  308.     
  309. (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;   
  310.  //string就是此时输入的那个字符 textField就是此时正在输入的那个输入框 返回YES就是可以改变输入框的值 NO相反  
  311.        
  312. if ([string isEqualToString:@"n"])  //按会车可以改变  
  313.       
  314.         return YES;   
  315.       
  316.     
  317.     NSString toBeString [textField.text stringByReplacingCharactersInRange:range withString:string]; //得到输入框的内容  
  318.     
  319.     if (self.myTextField == textField)  //判断是否时我们想要限定的那个输入框  
  320.       
  321.         if ([toBeString length] 20) //如果输入框内容大于20则弹出警告  
  322.             textField.text [toBeString substringToIndex:20];   
  323.             UIAlertView *alert [[[UIAlertView alloc] initWithTitle:nil message:@"超过最大字数不能输入了" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil] autorelease];   
  324.             [alert show];   
  325.             return NO;   
  326.           
  327.       
  328.     return YES;   
  329. }  
  330. 转自:http://blog.csdn.net/engandend/article/details/9990891
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 iOS 中,UITextField 的光标大小和颜色是由系统控制的,我们不能直接修改其大小,但是可以通过修改 UITextField 的 tint 属性来改变光标的颜色。 虽然不能直接修改光标大小,但我们可以通过设置 UITextField 的边框样式为 None,然后通过添加一个自定义的 UIView 作为光标来模拟实现。 以下是一个示例代码,可以在 UITextField 中添加一个自定义的光标: ```swift let customCursorView = UIView(frame: CGRect(x: 0, y: 0, width: 2, height: textField.frame.height)) customCursorView.backgroundColor = UIColor.red textField.tintColor = UIColor.clear textField.addSubview(customCursorView) ``` 在这个代码中,我们创建了一个自定义的 UIView,用于模拟光标。我们将其宽度设置为 2,高度设置为 UITextField 的高度,颜色设置为红色,并将其添加到 UITextField 上。最后,我们将 UITextField 的 tint 设置为 clear,以隐藏系统的光标。 需要注意的是,为了保证自定义光标的位置和系统光标的位置一致,我们还需要在 UITextField 的代理方法中添加以下代码: ```swift func textFieldDidChangeSelection(_ textField: UITextField) { if let selectedRange = textField.selectedTextRange { let cursorPosition = textField.offset(from: textField.beginningOfDocument, to: selectedRange.start) if let customCursorView = textField.subviews.last { customCursorView.frame.origin.x = textField.frame.origin.x + textField.textRect(forBounds: textField.bounds).origin.x + textField.font!.size(of: String(textField.text![..<textField.text!.index(textField.text!.startIndex, offsetBy: cursorPosition)]), constrainedToWidth: textField.frame.width).width } } } ``` 在这个代理方法中,我们获取了 UITextField 中被选中的文本范围,然后计算了光标在 UITextField 中的位置,并将自定义光标的位置进行了调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值