1.UITextField使用详解
//初始化textfield并设置位置及大小
UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];
1. 设置边框样
只有设置了才会显示边框样式
text.borderStyle = UITextBorderStyleRoundedRect;typedef enum {UITextBorderStyleNone, UITextBorderStyleLine,UITextBorderStyleBezel,UITextBorderStyleRoundedRect } UITextBorderStyle;
2. 设置输入框的背景颜色
此时设置为白色,如果使用了自定义背景图片边框会被忽略掉
text.backgroundColor = [UIColor whiteColor];
3. 设置背景
text.background = [UIImage imageNamed:@"dd.png"];
4. 设置背景
text.disabledBackground = [UIImage imageNamed:@"cc.png"];
5. placeholder 占位符
当输入框没有内容时,显示的内容
text.placeholder = @"password";
默认占位文字颜色是70% gray
如何想改变placeholder 颜色一有三种方法
1.使用NSAttributedString
NSMutableDictionary *attrs = [NSMutableDictionary dictionary]; // 创建属性字典attrs[NSFontAttributeName] = [UIFont systemFontOfSize:17]; // 设置fontattrs[NSForegroundColorAttributeName] = [UIColor greenColor]; // 设置颜色NSAttributedString *attStr = [[NSAttributedString alloc] initWithString:@"夏虫不可以语冰夏虫不" attributes:attrs]; // 初始化富文本占位字符串_textField.attributedPlaceholder = attStr;
2.自定义UITextField,重写- (void)drawPlaceholderInRect:(CGRect)rect;
- (void)drawPlaceholderInRect:(CGRect)rect
{[self.placeholder drawInRect:CGRectMake(0, 2, rect.size.width, 25) withAttributes:@{ NSFontAttributeName: [UIFont systemFontOfSize:16.0],NSForegroundColorAttributeName : [UIColor blueColor],}];
}
3.自定义UITextField,利用runTime找出UITextFiled内部隐藏的成员变量和属性,利用KVC进行修改。
#import "SJTextField.h"
#import <objc/runtime.h>
@implementation SJTextField// 初始化调用一次 用于查看UITextField中的成员属性和变量
+ (void)initialize
{[self getIvars];// [self getProperties];
}// 获取所有属性
+ (void)getProperties
{unsigned int count = 0;objc_property_t *properties = class_copyPropertyList([UITextField class], &count);for (int i = 0; i<count; i++) {// 取出属性objc_property_t property = properties[i];// 打印属性名字NSLog(@"%s<---->%s", property_getName(property), property_getAttributes(property));}free(properties);
}// 获取所有成员变量
+ (void)getIvars
{unsigned int count = 0;// 拷贝出所有的成员变量列表Ivar *ivars = class_copyIvarList([UITextField class], &count);for (int i = 0; i<count; i++) {// 取出成员变量// Ivar ivar = *(ivars + i);Ivar ivar = ivars[i];// 打印成员变量名字NSLog(@"%s %s", ivar_getName(ivar), ivar_getTypeEncoding(ivar));}// 释放free(ivars);
}
@end
- 可以查到有两个关于
placeholder
的属性和变量,分别是_placeholderLabel.textColor
和_placeholderLabel
,故下面就是用来设置动态改变placeholder
颜色的代码。 - 代码(在自定义UITextField中)
#import "SJTextField.h"
#import <objc/runtime.h>
@implementation SJTextField
static NSString * const SJPlacerholderColorKeyPath = @"_placeholderLabel.textColor";
- (void)awakeFromNib
{
// 设置placeholder开始颜色(方式一)
// UILabel *placeholderLabel = [self valueForKeyPath:@"_placeholderLabel"];
// placeholderLabel.textColor = [UIColor redColor]; // 设置placeholder开始颜色(方式二)[self setValue:[UIColor greenColor] forKeyPath:SJPlacerholderColorKeyPath];// 不成为第一响应者[self resignFirstResponder];
}/*** 当前文本框聚焦时就会调用*/
- (BOOL)becomeFirstResponder
{// 修改占位文字颜色[self setValue:[UIColor redColor] forKeyPath:SJPlacerholderColorKeyPath];return [super becomeFirstResponder];
}/*** 当前文本框失去焦点时就会调用*/
- (BOOL)resignFirstResponder
{// 修改占位文字颜色[self setValue:[UIColor greenColor] forKeyPath:SJPlacerholderColorKeyPath];return [super resignFirstResponder];
}
@end
6. 设置输入框内容的字体样式和大小
text.font = [UIFont fontWithName:@"Arial" size:20.0f];
7. 设置字体颜色
text.textColor = [UIColor redColor];
8. 输入框中是否有个叉号,在什么时候显示,用于一次性删除输入框中的内容
text.clearButtonMode = UITextFieldViewModeAlways;typedef enum {UITextFieldViewModeNever, 重不出现UITextFieldViewModeWhileEditing, 编辑时出现UITextFieldViewModeUnlessEditing, 除了编辑外都出现UITextFieldViewModeAlways 一直出现} UITextFieldViewMode;
输入框中一开始就有的文字
text.text = @"一开始就在输入框的文字";
9. 密码显示输入内容,每输入一个字符就变成点
text.secureTextEntry = YES;
10. 是否纠错
text.autocorrectionType = UITextAutocorrectionTypeNo;typedef enum {UITextAutocorrectionTypeDefault, 默认UITextAutocorrectionTypeNo, 不自动纠错UITextAutocorrectionTypeYes, 自动纠错} UITextAutocorrectionType;
11. 再次编辑就清空
text.clearsOnBeginEditing = YES;
12. 内容对齐方式
text.textAlignment = UITextAlignmentLeft;
13. 内容的垂直对齐方式
UITextField继承自UIControl,此类中有一个属性contentVerticalAlignment
text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
14. 适应文本窗口
设置为YES时文本会自动缩小以适应文本窗口大小.默认是保持原来大小,而让长文本滚动
textFied.adjustsFontSizeToFitWidth = YES;
15. 设置自动缩小显示的最小字体大小
text.minimumFontSize = 20;
16. 设置键盘的样式
text.keyboardType = UIKeyboardTypeNumberPad;typedef enum {UIKeyboardTypeDefault, 默认键盘,支持所有字符 UIKeyboardTypeASCIICapable, 支持ASCII的默认键盘UIKeyboardTypeNumbersAndPunctuation, 标准电话键盘,支持+*#字符UIKeyboardTypeURL, URL键盘,支持.com按钮 只支持URL字符UIKeyboardTypeNumberPad, 数字键盘UIKeyboardTypePhonePad, 电话键盘UIKeyboardTypeNamePhonePad, 电话键盘,也支持输入人名UIKeyboardTypeEmailAddress, 用于输入电子 邮件地址的键盘 UIKeyboardTypeDecimalPad, 数字键盘 有数字和小数点UIKeyboardTypeTwitter, 优化的键盘,方便输入@、#字符UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, } UIKeyboardType;
17. 首字母是否大写
text.autocapitalizationType = UITextAutocapitalizationTypeNone;typedef enum {UITextAutocapitalizationTypeNone, 不自动大写UITextAutocapitalizationTypeWords, 单词首字母大写UITextAutocapitalizationTypeSentences, 句子的首字母大写UITextAutocapitalizationTypeAllCharacters, 所有字母都大写} UITextAutocapitalizationType;
//return键变成什么键
text.returnKeyType =UIReturnKeyDone;
typedef enum {UIReturnKeyDefault, 默认 灰色按钮,标有ReturnUIReturnKeyGo, 标有Go的蓝色按钮UIReturnKeyGoogle,标有Google的蓝色按钮,用语搜索UIReturnKeyJoin,标有Join的蓝色按钮UIReturnKeyNext,标有Next的蓝色按钮UIReturnKeyRoute,标有Route的蓝色按钮UIReturnKeySearch,标有Search的蓝色按钮UIReturnKeySend,标有Send的蓝色按钮UIReturnKeyYahoo,标有Yahoo的蓝色按钮UIReturnKeyYahoo,标有Yahoo的蓝色按钮UIReturnKeyEmergencyCall, 紧急呼叫按钮} UIReturnKeyType;
18. 键盘外观
textView.keyboardAppearance=UIKeyboardAppearanceDefault;typedef enum {UIKeyboardAppearanceDefault, 默认外观,浅灰色UIKeyboardAppearanceAlert, 深灰 石墨色} UIReturnKeyType;
//设置代理 用于实现协议
text.delegate = self;
//把textfield加到视图中
[self.window addSubview:text];
19. rightView LeftView
最右侧加图片是以下代码 左侧类似
UIImageView *image=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];text.rightView=image;text.rightViewMode = UITextFieldViewModeAlways; typedef enum {UITextFieldViewModeNever,UITextFieldViewModeWhileEditing,UITextFieldViewModeUnlessEditing,UITextFieldViewModeAlways} UITextFieldViewMode;
//按return键键盘往下收 becomeFirstResponder
类要采用UITextFieldDelegate协议
20. textFieldShouldReturn
text.delegate = self; 声明text的代理是我,我会去实现把键盘往下收的方法 这个方法在UITextFieldDelegate里所以我们要采用UITextFieldDelegate这个协议
- (BOOL)textFieldShouldReturn:(UITextField *)textField{[text resignFirstResponder]; //主要是[receiver resignFirstResponder]在哪调用就能把receiver对应的键盘往下收return YES;}
21. 重写绘制行为
除了UITextField对象的风格选项,你还可以定制化UITextField对象,为他添加许多不同的重写方法,来改变文本字段的显示行为。这些方法都会返回一个CGRect结构,制定了文本字段每个部件的边界范围。以下方法都可以重写。
– textRectForBounds: //重写来重置文字区域– drawTextInRect: //改变绘文字属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.– placeholderRectForBounds: //重写来重置占位符区域– drawPlaceholderInRect: //重写改变绘制占位符属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.– borderRectForBounds: //重写来重置边缘区域– editingRectForBounds: //重写来重置编辑区域– clearButtonRectForBounds: //重写来重置clearButton位置,改变size可能导致button的图片失真– leftViewRectForBounds:– rightViewRectForBounds:
22. 委托方法
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ //返回一个BOOL值,指定是否循序文本字段开始编辑 return YES; } - (void)textFieldDidBeginEditing:(UITextField *)textField
{ //开始编辑时触发,文本字段将成为first responder
} - (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{ //返回BOOL值,指定是否允许文本字段结束编辑,当编辑结束,文本字段会让出first responder //要想在用户结束编辑时阻止文本字段消失,可以返回NO //这对一些文本字段必须始终保持活跃状态的程序很有用,比如即时消息 return NO;
} - (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{ //当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。 //这对于想要加入撤销选项的应用程序特别有用 //可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。 //要防止文字被改变可以返回NO //这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中 return YES;
} - (BOOL)textFieldShouldClear:(UITextField *)textField
{ //返回一个BOOL值指明是否允许根据用户请求清除内容 //可以设置在特定条件下才允许清除内容 return YES;
} -(BOOL)textFieldShouldReturn:(UITextField *)textField
{ //返回一个BOOL值,指明是否允许在按下回车键时结束编辑 //如果允许要调用resignFirstResponder 方法,这回导致结束编辑,而键盘会被收起 [textField resignFirstResponder];//查一下resign这个单词的意思就明白这个方法了 return YES; }
23. 通知
UITextField派生自UIControl,所以UIControl类中的通知系统在文本字段中也可以使用。除了UIControl类的标准事件,你还可以使用下列UITextField类特有的事件
UITextFieldTextDidBeginEditingNotificationUITextFieldTextDidChangeNotificationUITextFieldTextDidEndEditingNotification
当文本字段退出编辑模式时触发。通知的object属性存储了最终文本。
因为文本字段要使用键盘输入文字,所以下面这些事件发生时,也会发送动作通知
UIKeyboardWillShowNotification //键盘显示之前发送UIKeyboardDidShowNotification //键盘显示之后发送UIKeyboardWillHideNotification //键盘隐藏之前发送UIKeyboardDidHideNotification //键盘隐藏之后发送
24. 限制只能输入特定的字符
(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{NSCharacterSet *cs;cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet];//按cs分离出数组,数组按@""分离出字符串NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""];BOOL canChange = [string isEqualToString:filtered];return canChange;
}
上面那个NUMBERS是一个宏,可以在文件顶部定义:
#define NUMBERS @”0123456789\n” (这个代表可以输入数字和换行,请注意这个\n,如果不写这个,Done按键将不会触发,如果用在SearchBar中,将会不触发Search事件,因为你自己限制不让输入\n,好惨,我在项目中才发现的。)
所以,如果你要限制输入英文和数字的话,就可以把这个定义为:
#define kAlphaNum @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″。
当然,你还可以在以上方法return之前,做一提示的,比如提示用户只能输入数字之类的。如果你觉得有需要的话。
25. 限制只能输入一定长度的字符
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
{ //string就是此时输入的那个字符 textField就是此时正在输入的那个输入框 返回YES就是可以改变输入框的值 NO相反if ([string isEqualToString:@"\n"]) //按会车可以改变{ return YES; } NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string]; //得到输入框的内容if (self.myTextField == textField) //判断是否时我们想要限定的那个输入框{ if ([toBeString length] > 20) { //如果输入框内容大于20则弹出警告textField.text = [toBeString substringToIndex:20]; UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:nil message:@"超过最大字数不能输入了" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil] autorelease]; [alert show]; return NO; } } return YES;
}
26. shouldChangeCharactersInRange 限制输入缺陷及 如何解决
通过shouldChangeCharactersInRange函来限制输入长度时 如果通过copy方式获取的字符串超过限制长度时,那么,一个字符也不能输入进去,可以通过下面方式解决
//添加 UIControlEventEditingChanged事件[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];- (void)textFieldDidChange:(UITextField *)textField
{
// //汉字和字母都占一位
// NSString* str1 = textField.text;
//
// if(str1.length > maxLength)
// {
// textField.text = [str1 substringToIndex:6];
// }//汉字占两位字母占一位NSString* str1 = textField.text;NSUInteger mixtureLength = [self textLength:str1];NSString* tempStr = str1;while (mixtureLength > maxLength) {tempStr = [tempStr substringToIndex: tempStr.length-1];mixtureLength = [self textLength:tempStr];}textField.text = tempStr;}-(NSUInteger)textLength: (NSString *) text
{NSUInteger asciiLength = 0;for (NSUInteger i = 0; i < text.length; i++){unichar uc = [text characterAtIndex: i];//设置汉字和字母的比例 如果限制是6个汉字或6个字符 就是 1:1 如果限制是6个汉字或12个字符 就是 1:2 如何限制6个字符或12个字母 就是1:3 一次类推asciiLength += isascii(uc) ? 1 : 2;}NSUInteger unicodeLength = asciiLength;return unicodeLength;
}
27. 限制输入内容
#import "ViewController.h"#define DEF_CARD @"1234567890Xx"
/// 只能输入数字
#define DEF_NUMBER @"1234567890"
/// 只能输入邮箱需要字符
#define DEF_MAIL @"1234567890@.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
/// 只能输入数字、字母、汉字(即限制输入特殊字符,用这种方法虽然比较笨,但还是有优点的,当不需要限制某些特殊字符时直接去掉就OK了)
#define DEF_NUMBERCHARCHINA [self specialSymbolsAction]@interface ViewController () <UITextFieldDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;@end@implementation ViewController#pragma mark UITextFieldDelegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{//名字if(textField.tag == 1000){NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:DEF_NUMBERCHARCHINA]invertedSet];NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];BOOL basicTest = [string isEqualToString:filtered];if(basicTest){if([string isEqualToString:@""]){return YES;}return NO;}//电话号码 纯数字可以使用数字键盘Number Pad}else if(textField.tag == 1001){NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:DEF_NUMBER]invertedSet];NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];BOOL basicTest = [string isEqualToString:filtered];if(!basicTest){return NO;}//身份证号}else if(textField.tag == 1002){NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:DEF_CARD]invertedSet];NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];BOOL basicTest = [string isEqualToString:filtered];if(!basicTest){return NO;}//邮箱 使用键盘E-mail Address}else if(textField.tag == 1003){NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:DEF_MAIL]invertedSet];NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];BOOL basicTest = [string isEqualToString:filtered];if(!basicTest){return NO;}}return YES;
}/// 完成编辑
- (void)textFieldDidEndEditing:(UITextField *)textField{NSString *fieldText = textField.text;NSString *changeField = @"";NSMutableArray *fieldArr = [[NSMutableArray alloc] init];for (int j = 0; j<fieldText.length; j++) {NSString *subStr = [fieldText substringWithRange:NSMakeRange(j, 1)];[fieldArr addObject:subStr];}for (int i = 0; i < fieldArr.count ; i ++) {NSString *string = [fieldArr objectAtIndex:i];//名字if(textField.tag == 1000){NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:DEF_NUMBERCHARCHINA]invertedSet];NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];BOOL basicTest = [string isEqualToString:filtered];if(!basicTest){changeField = [NSString stringWithFormat:@"%@%@",changeField,string];}//电话号码}else if(textField.tag == 1001){NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:DEF_NUMBER]invertedSet];NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];BOOL basicTest = [string isEqualToString:filtered];if(basicTest){changeField = [NSString stringWithFormat:@"%@%@",changeField,string];}//身份证号}else if(textField.tag == 1002){NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:DEF_CARD]invertedSet];NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];BOOL basicTest = [string isEqualToString:filtered];if(basicTest){changeField = [NSString stringWithFormat:@"%@%@",changeField,string];}//邮箱}else if(textField.tag == 1003){NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:DEF_MAIL]invertedSet];NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];BOOL basicTest = [string isEqualToString:filtered];if(basicTest){changeField = [NSString stringWithFormat:@"%@%@",changeField,string];}}}textField.text = changeField;
}/// 特殊符号
- (NSString *)specialSymbolsAction{//数学符号NSString *matSym = @" ﹢﹣×÷±/=≌∽≦≧≒﹤﹥≈≡≠=≤≥<>≮≯∷∶∫∮∝∞∧∨∑∏∪∩∈∵∴⊥∥∠⌒⊙√∟⊿㏒㏑%‰⅟½⅓⅕⅙⅛⅔⅖⅚⅜¾⅗⅝⅞⅘≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≠≡≢≣≤≥≦≧≨≩⊰⊱⋛⋚∫∬∭∮∯∰∱∲∳%℅‰‱øØπ";//标点符号NSString *punSym = @"。,、':∶;?‘’“”〝〞ˆˇ﹕︰﹔﹖﹑·¨….¸;!´?!~—ˉ|‖"〃`@﹫¡¿﹏﹋﹌︴々﹟#﹩$﹠&﹪%*﹡﹢﹦﹤‐ ̄¯―﹨ˆ˜﹍﹎+=<__-ˇ~﹉﹊()〈〉‹›﹛﹜『』〖〗[]《》〔〕{}「」【】︵︷︿︹︽_﹁﹃︻︶︸﹀︺︾ˉ﹂﹄︼❝❞!():,'[]{}^・.·.•#^*+=\<>&§⋯`-–/—|\"\\";//单位符号*·NSString *unitSym = @"°′″$¥〒¢£%@℃℉﹩﹪‰﹫㎡㏕㎜㎝㎞㏎m³㎎㎏㏄º○¤%$º¹²³";//货币符号NSString *curSym = @"₽€£Ұ₴$₰¢₤¥₳₲₪₵元₣₱฿¤₡₮₭₩ރ円₢₥₫₦zł﷼₠₧₯₨Kčर₹ƒ₸¢";//制表符NSString *tabSym = @"─ ━│┃╌╍╎╏┄ ┅┆┇┈ ┉┊┋┌┍┎┏┐┑┒┓└ ┕┖┗ ┘┙┚┛├┝┞┟┠┡┢┣ ┤┥┦┧┨┩┪┫┬ ┭ ┮ ┯ ┰ ┱ ┲ ┳ ┴ ┵ ┶ ┷ ┸ ┹ ┺ ┻┼ ┽ ┾ ┿ ╀ ╁ ╂ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊ ╋ ╪ ╫ ╬═║╒╓╔ ╕╖╗╘╙╚ ╛╜╝╞╟╠ ╡╢╣╤ ╥ ╦ ╧ ╨ ╩ ╳╔ ╗╝╚ ╬ ═ ╓ ╩ ┠ ┨┯ ┷┏ ┓┗ ┛┳ ⊥ ﹃ ﹄┌ ╮ ╭ ╯╰";return [NSString stringWithFormat:@"%@%@%@%@%@",matSym,punSym,unitSym,curSym,tabSym];
}/**常用符号大全*特殊符号 编号序号 数学符号 爱心符号 标点符号 单位符号 货币符号 箭头符号 符号图案 希腊字母 俄语字母*汉语拼音 中文字符 日语字符 制表符 皇冠符号*//*//特殊符号♠♣♧♡♥❤❥❣♂♀✲☀☼☾☽◐◑☺☻☎☏✿❀№↑↓←→√×÷★℃℉°◆◇⊙■□△▽¿½☯✡㍿卍卐♂♀✚〓㎡♪♫♩♬㊚㊛囍㊒㊖Φ♀♂‖$@*&#※卍卐Ψ♫♬♭♩♪♯♮⌒¶∮‖€£¥$//编号序号①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳⓪❶❷❸❹❺❻❼❽❾❿⓫⓬⓭⓮⓯⓰⓱⓲⓳⓴㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵//数学符号﹢﹣×÷±/=≌∽≦≧≒﹤﹥≈≡≠=≤≥<>≮≯∷∶∫∮∝∞∧∨∑∏∪∩∈∵∴⊥∥∠⌒⊙√∟⊿㏒㏑%‰⅟½⅓⅕⅙⅛⅔⅖⅚⅜¾⅗⅝⅞⅘≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≠≡≢≣≤≥≦≧≨≩⊰⊱⋛⋚∫∬∭∮∯∰∱∲∳%℅‰‱øØπ//爱心符号♥❣ღ♠♡♤❤❥//标点符号。,、':∶;?‘’“”〝〞ˆˇ﹕︰﹔﹖﹑·¨….¸;!´?!~—ˉ|‖"〃`@﹫¡¿﹏﹋﹌︴々﹟#﹩$﹠&﹪%*﹡﹢﹦﹤‐ ̄¯―﹨ˆ˜﹍﹎+=<__-ˇ~﹉﹊()〈〉‹›﹛﹜『』〖〗[]《》〔〕{}「」【】︵︷︿︹︽_﹁﹃︻︶︸﹀︺︾ˉ﹂﹄︼❝❞!():,'[]{}^・.·.•#^*+=\<>&§⋯`-–/—|\"\\//单位符号°′″$¥〒¢£%@℃℉﹩﹪‰﹫㎡㏕㎜㎝㎞㏎m³㎎㎏㏄º○¤%$º¹²³//货币符号₽€£Ұ₴$₰¢₤¥₳₲₪₵元₣₱฿¤₡₮₭₩ރ円₢₥₫₦zł﷼₠₧₯₨Kčर₹ƒ₸¢//箭头符号
↑↓←→↖↗↘↙↔↕➻➼➽➸➳➺➻➴➵➶➷➹▶►▷◁◀◄«»➩➪➫➬➭➮➯➱⏎➲➾➔➘➙➚➛➜➝➞➟➠➡➢➣➤➥➦➧➨↚↛↜↝↞↟↠↠↡↢↣↤↤↥↦↧↨⇄⇅⇆⇇⇈⇉⇊⇋⇌⇍⇎⇏⇐⇑⇒⇓⇔⇖⇗⇘⇙⇜↩↪↫↬↭↮↯↰↱↲↳↴↵↶↷↸↹☇☈↼↽↾↿⇀⇁⇂⇃⇞⇟⇠⇡⇢⇣⇤⇥⇦⇧⇨⇩⇪↺↻⇚⇛♐//符号图案✐✎✏✑✒✍✉✁✂✃✄✆✉☎☏☑✓✔√☐☒✗✘ㄨ✕✖✖☢☠☣✈★☆✡囍㍿☯☰☲☱☴☵☶☳☷☜☞☝✍☚☛☟✌♤♧♡♢♠♣♥♦☀☁☂❄☃♨웃유❖☽☾☪✿♂♀✪✯☭➳卍卐√×■◆●○◐◑✙☺☻❀⚘♔♕♖♗♘♙♚♛♜♝♞♟♧♡♂♀♠♣♥❤☜☞☎☏⊙◎☺☻☼▧▨♨◐◑↔↕▪▒◊◦▣▤▥▦▩◘◈◇♬♪♩♭♪の★☆→あぃ£Ю〓§♤♥▶¤✲❈✿✲❈➹☀☂☁【】┱┲❣✚✪✣✤✥✦❉❥❦❧❃❂❁❀✄☪☣☢☠☭ღ▶▷◀◁☀☁☂☃☄★☆☇☈⊙☊☋☌☍ⓛⓞⓥⓔ╬『』∴☀♫♬♩♭♪☆∷﹌の★◎▶☺☻►◄▧▨♨◐◑↔↕↘▀▄█▌◦☼♪の☆→♧ぃ£❤▒▬♦◊◦♠♣▣۰•❤•۰►◄▧▨♨◐◑↔↕▪▫☼♦⊙●○①⊕◎Θ⊙¤㊣★☆♀◆◇◣◢◥▲▼△▽⊿◤◥✐✌✍✡✓✔✕✖♂♀♥♡☜☞☎☏⊙◎☺☻►◄▧▨♨◐◑↔↕♥♡▪▫☼♦▀▄█▌▐░▒▬♦◊◘◙◦☼♠♣▣▤▥▦▩◘◙◈♫♬♪♩♭♪✄☪☣☢☠♯♩♪♫♬♭♮☎☏☪♈ºº₪¤큐«»™♂✿♥ ◕‿-。 。◕‿◕。//希腊字母ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζνξοπρσηθικλμτυφχψω//俄语字母АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя//汉语拼音āáǎàōóǒòēéěèīíǐìūúǔùǖǘǚǜüêɑńňɡㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ//中文字符零壹贰叁肆伍陆柒捌玖拾佰仟万亿吉太拍艾分厘毫微卍卐卄巜弍弎弐朤氺曱甴囍兀々〆のぁ〡〢〣〤〥〦〧〨〩㊎㊍㊌㊋㊏㊚㊛㊐㊊㊣㊤㊥㊦㊧㊨㊒㊫㊑㊓㊔㊕㊖㊗㊘㊜㊝㊞㊟㊠㊡㊢㊩㊪㊬㊭㊮㊯㊰㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉//日文平假名片假名ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんゔゕゖァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ゠ㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ//制表符─ ━│┃╌╍╎╏┄ ┅┆┇┈ ┉┊┋┌┍┎┏┐┑┒┓└ ┕┖┗ ┘┙┚┛├┝┞┟┠┡┢┣ ┤┥┦┧┨┩┪┫┬ ┭ ┮ ┯ ┰ ┱ ┲ ┳ ┴ ┵ ┶ ┷ ┸ ┹ ┺ ┻┼ ┽ ┾ ┿ ╀ ╁ ╂ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊ ╋ ╪ ╫ ╬═║╒╓╔ ╕╖╗╘╙╚ ╛╜╝╞╟╠ ╡╢╣╤ ╥ ╦ ╧ ╨ ╩ ╳╔ ╗╝╚ ╬ ═ ╓ ╩ ┠ ┨┯ ┷┏ ┓┗ ┛┳ ⊥ ﹃ ﹄┌ ╮ ╭ ╯╰//皇冠符号♚ ♛ ♝ ♞ ♜ ♟ ♔ ♕ ♗ ♘ ♖ ♟*/@end妇
1.UITextField使用详解相关推荐
- 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
博客地址 : http://blog.csdn.net/shulianghan/article/details/50051499 ; 一. UI 控件简介 1. UI 控件分类 UI 控件分类 : 活 ...
- iOS中 HTTP/Socket/TCP/IP通信协议详解 韩俊强的博客
版权声明:本文为博主原创文章,未经博主允许不得转载. 每日更新关注:http://weibo.com/hanjunqiang 新浪微博 简单介绍: [objc] view plaincopy // ...
- ios开发读取剪切板的内容_iOS中管理剪切板的UIPasteboard粘贴板类用法详解
一.自带剪切板操作的原生UI控件在iOS的UI系统中,有3个控件自带剪切板操作,分别是UITextField.UITextView与UIWebView.在这些控件的文字交互处进行长按手势可以在屏幕视图 ...
- Objective-C ,ios,iphone开发基础:UIAlertView使用详解
UIAlertView使用详解 Ios中为我们提供了一个用来弹出提示框的类 UIAlertView,他类似于javascript中的alert 和c#中的MessageBox(); UIAlertVi ...
- iOS runtime 底层详解、内部原理、场景应用
前言学:位域和共用体 一:isa指针--runtime之前的学习 1.1:苹果应用的按位或.按位与 二:类对象信息 2.1:类对象信息:rw_t 2.2:类对象信息:方法缓存(很关键) 2.2:类对象 ...
- android什么控件能够输入多行文字,Android开发:文本控件详解——EditText(一)基本属性...
一.简单实例: EditText输入的文字样式部分的属性,基本都是和TextView中的属性一样. 除此之外,EditText还有自己独有的属性. 二.基本属性: hint 输入框显示的提示文本 te ...
- php能做定时关机吗,window_win10怎么定时关机?Win10系统定时关机命令使用方法详解,对于电脑用户来说,定时关机 - phpStudy...
win10怎么定时关机?Win10系统定时关机命令使用方法详解 对于电脑用户来说,定时关机有时候经常会用到,比如夜间下载东西或者下载一些大文件,而又没有时间一直守着电脑,这时候设置电脑定时关机就很实用 ...
- Protocol与Delegate 使用方法详解
你要知道的KVC.KVO.Delegate.Notification都在这里 转载请注明出处 http://blog.csdn.net/u014205968/article/details/78224 ...
- mediumtext_MySQL中tinytext、text、mediumtext和longtext等各个类型详解【图】
MySQL中tinytext.text.mediumtext和longtext等各个类型详解[图] 07-29栏目:技术 TAG:mediumtext mediumtext 一.字符串类型 www.j ...
- 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)
首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...
最新文章
- 精简的shell计算器
- H5 App开发工具 WeX5
- 关于MyBatis的缓存
- 1910140408安装win版
- dbutils java_Dbutils工具类的使用
- linux系统查看磁盘信息
- 理解 Delphi 的类(十) - 深入方法[2] - 参数分割
- 文件的操作,如何做文件上传
- mysql如何更改文件所有者sa_Mssql Server2005中更改sa的用户名的多种方法
- matlab教程 导入数据,MATLAB数据导入
- 听北大公开课庄明科老师《大学生职业素养提升》第一集:《自我效能感》的笔记
- chromium 浏览器多进程架构小科普
- 【rmzt:进击的巨人三笠帅气主题】
- 简述igp和egp_IGP 和 EGP 这两类协议的主要区别是什么 - 问答库
- win10家庭版用户实现远程桌面解决办法
- 高分一号影像处理流程
- DeepTalk vol.1 新物种打造爆品,总共分几步?
- Python之环境的搭建
- XJOI1133百鸡问题
- 天正T20 V7.0系列软件下载
热门文章
- 数据不平衡分类问题 代价矩阵 损失函数
- 基于STM32的鱼塘远程监测系统
- thinkpad重装系统不引导_联想品牌机重装系统无法引导原因分析以及解决方法(全面分析)...
- UA MATH563 概率论的数学基础 中心极限定理1 随机变量序列的收敛
- 关于目前CIM(BIM+GIS)行业的一些看法
- 读书笔记:《世说新语》
- 前端控制台返回406错误解决方法
- (2021总结篇)面向对象软件设计模式--(八)结构型模式---树形结构的处理--组合模式
- 华为网络设备——单臂路由的配置示例
- python求残差_在python中如何计算点过程的残差