UITextField
1 1.UITextField的初始化和设置 2 textField = [[UITextField alloc] initWithFrame:CGRectMake(120.0f, 80.0f, 150.0f, 30.0f)]; 3 [textField setBorderStyle:UITextBorderStyleRoundedRect]; //外框类型 4 5 textField.placeholder = @"password"; //默认显示的字 6 7 textField.secureTextEntry = YES; //密码 8 9 textField.autocorrectionType = UITextAutocorrectionTypeNo; 10 textField.autocapitalizationType = UITextAutocapitalizationTypeNone; 11 textField.returnKeyType = UIReturnKeyDone; 12 textField.clearButtonMode = UITextFieldViewModeWhileEditing; //编辑时会出现个修改X 13 14 textField.delegate = self; 15 2.要实现的Delegate方法,关闭键盘 16 - (BOOL)textFieldShouldReturn:(UITextField *)textField 17 { 18 [self.textField resignFirstResponder]; 19 return YES; 20 } 21 3. 可以在UITextField使用下面方法,按return键返回 22 -(IBAction) textFieldDone:(id) sender 23 { 24 [textFieldName resignFirstResponder]; 25 } 26 链接TextField控件的"Did end on exit" 27 最右侧加图片是以下代码, 28 UIImageView *imgv=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]]; 29 text.rightView=imgv; 30 text.rightViewMode = UITextFieldViewModeAlways; 31 32 如果是在最左侧加图片就换成: 33 text.leftView=imgv; 34 text.leftViewMode = UITextFieldViewModeAlways; 35 UITextField 继承自 UIControl,此类中有一个属性contentVerticalAlignment 36 所以想让UITextField里面的text垂直居中可以这样写: 37 text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 38 查看函数的方法: 39 按住command键双击进入函数声明 40 按住alt键双击进入doc文档 41 /////////////////////////////////////////////////////////////// 42 文本框常用方法: 43 如何用程序删除文本框中选中的文本 44 [textView delete: nil]; 45 /////////////////////////////////////////////////////////////// 46 如何限制文本框只能输入数字: 47 建立NSNumberFormatter的子类,增加这个方法,将formatter链接至文本框。 48 49 - (BOOL) isPartialStringValid: (NSString **) partialStringPtr 50 proposedSelectedRange: (NSRangePointer) proposedSelRangePtr 51 originalString: (NSString *) origString 52 originalSelectedRange: (NSRange) origSelRange 53 errorDescription: (NSString **) error 54 { 55 NSCharacterSet *nonDigits; 56 NSRange newStuff; 57 NSString *newStuffString; 58 59 nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; 60 newStuff = NSMakeRange(origSelRange.location, 61 proposedSelRangePtr->location 62 - origSelRange.location); 63 newStuffString = [*partialStringPtr substringWithRange: newStuff]; 64 65 if ([newStuffString rangeOfCharacterFromSet: nonDigits 66 options: NSLiteralSearch].location != NSNotFound) { 67 *error = @"不是数字"; 68 return (NO); 69 } else { 70 *error = nil; 71 return (YES); 72 } 73 74 } 75 /////////////////////////////////////////////////////////////// 76 从文本框获取十六进制数据的代码 77 char singleNumberString[3] = {'\0','\0','\0'}; 78 uint32_t singleNumber = 0; 79 uint32_t i = 0; 80 NSMutableData *data = [NSMutableData data]; 81 //从文本框获取到得数据 82 const char *buf = [[_hexToSendTextField text] UTF8String]; 83 //转换为十六进制 84 for(i = 0; i < strlen(buf); i+=2) 85 { 86 if(((i+1) < len && isxdigit(buf) && (isxdigit(buf[i+1]))) 87 { 88 singleNumberString[0] = buf; 89 singleNumberString[1] = buf[i+1]; 90 sscanf(singleNumberString, "%x", &singleNumber); 91 [data appendBytes:(void*)(&tmp) length:1]; 92 } 93 else 94 { 95 break; 96 } 97 } 98 //输出 99 NSLog(@"%@", data); 100 ///////////////////////////////////////////////////////////// 101 点击 UITextView 输入文字,光标都从最初点开始 102 - (void)textViewDidChangeSelection:(UITextView *)textView 103 { 104 NSRange range; 105 range.location = 0; 106 range.length = 0; 107 textView.selectedRange = range; 108 } 109 /////////////////////////////////////////////////////////// 110 软键盘 111 在登录页面要实现用户名和密码,密码要是点点格式,引入当前页面光标要停留在用户名选项,软键盘要弹出界面。如下图: 112 弹出键盘: 113 [username becomeFirstResponder]; 114 取消键盘: 115 [username resignFirstResponder]; 116 密码保护: 117 password.secureTextEntry=YES; 118 ////////////////////////////////////////////////////////////////// 119 1.UITextField的初始化和设置 120 textField = [[UITextField alloc] initWithFrame:CGRectMake(120.0f, 80.0f, 150.0f, 30.0f)]; 121 [textField setBorderStyle:UITextBorderStyleRoundedRect]; //外框类型 122 textField.placeholder = @"password"; //默认显示的字 123 textField.secureTextEntry = YES; //密码 124 textField.autocorrectionType = UITextAutocorrectionTypeNo; 125 textField.autocapitalizationType = UITextAutocapitalizationTypeNone; 126 textField.returnKeyType = UIReturnKeyDone; 127 textField.clearButtonMode = UITextFieldViewModeWhileEditing; //编辑时会出现个修改X 128 textField.delegate = self; 129 2.要实现的Delegate方法,关闭键盘 130 - (BOOL)textFieldShouldReturn:(UITextField *)textField 131 { 132 [self.textField resignFirstResponder]; 133 return YES; 134 } 135 3. 可以在UITextField使用下面方法,按return键返回 136 -(IBAction) textFieldDone:(id) sender 137 { 138 [textFieldName resignFirstResponder]; 139 } 140 链接TextField控件的"Did end on exit" 141 //////////////////////////////////////////////////////////////////// 142 限制输入文本的长度 143 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 144 { 145 if (range.location >= MAX_LENGTH) 146 return NO; // return NO to not change text 147 return YES; 148 } 149 if (textField.text.length >= 10 && range.length == 0) 150 return NO; 151 return YES; 152 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 153 { 154 if ([textField.text length] > MAXLENGTH) 155 { 156 textField.text = [textField.text substringToIndex:MAXLENGTH-1]; 157 return NO; 158 } 159 return YES; 160 } 161 ////////////////////////////////////////////////////////////////////// 162 使用UITextFieldDelegate来隐藏键盘 163 在iPhone界面上,时常会需要当用户输入完内容后,隐藏键盘。 当然有很多方法,今天只介绍使用UITextFieldDelegate这个协议实现隐藏键盘。 164 其实很简单, 需要三步: 165 1. 在你的控制器类中,加入UITextFieldDelegate这个协议 166 如:@interface AddItemViewController : UIViewController <UITextFieldDelegate> 167 2. 在使用了UITextFieldDelegate协议的控制器类的实现中,加入- (BOOL)textFieldShouldReturn:方法。 168 - (BOOL)textFieldShouldReturn:(UITextField *)textField { 169 170 [textField resignFirstResponder]; 171 return YES; 172 } 173 //设置焦点: 174 175 [UITextField becomeFirstResponder]; 176 177 3. 将xib文件中的TextField控件的delegate变量指向到之前使用UITextFieldDelegate协议的那个控制器类,将 TextField的delegate IBOutlet变量右键链接到前面的控制器类的实例上。或者使用代码方式,指定相关TextField的delegate变量。 178 179 - (void)viewDidLoad 180 181 { 182 183 [super viewDidLoad]; 184 185 itemNameField.delegate = self; 186 187 priceField.delegate = self; 188 189 }