.UITextField的初始化和設置
textField = [[UITextField alloc] initWithFrame:CGRectMake(120.0f, 80.0f, 150.0f, 30.0f)];
[textField setBorderStyle:UITextBorderStyleRoundedRect]; //外框類型
textField.placeholder = @"password"; //默認顯示的字
textField.secureTextEntry = YES; //密碼
textField.autocorrectionType = UITextAutocorrectionTypeNo;
textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
textField.returnKeyType = UIReturnKeyDone;
textField.clearButtonMode = UITextFieldViewModeWhileEditing; //編輯時會出現個修改X
textField.delegate = self;
.要實現的Delegate方法,關閉鍵盤
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[self.textField resignFirstResponder];
return YES;
}
. 可以在UITextField使用下面方法,按return鍵返回
-(IBAction) textFieldDone:(id) sender
{
[textFieldName resignFirstResponder];
}
鏈接TextField控件的"Did end on exit"
最右側加圖片是以下代碼,
UIImageView *imgv=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];
text.rightView=imgv;
text.rightViewMode = UITextFieldViewModeAlways;
如果是在最左側加圖片就換成:
text.leftView=imgv;
text.leftViewMode = UITextFieldViewModeAlways;
UITextField 繼承自 UIControl,此類中有一個屬性contentVerticalAlignment
所以想讓UITextField裏面的text垂直居中可以這樣寫:
text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
查看函數的方法:
按住command鍵雙擊進入函數聲明
按住alt鍵雙擊進入doc文檔
///////////////////////////////////////////////////////////////
文本框常用方法:
如何用程序刪除文本框中選中的文本
[textView delete: nil];
///////////////////////////////////////////////////////////////
如何限制文本框只能輸入數字:
建立NSNumberFormatter的子類,增加這個方法,將formatter鏈接至文本框。
- (BOOL) isPartialStringValid: (NSString **) partialStringPtr
proposedSelectedRange: (NSRangePointer) proposedSelRangePtr
originalString: (NSString *) origString
originalSelectedRange: (NSRange) origSelRange
errorDescription: (NSString **) error
{
NSCharacterSet *nonDigits;
NSRange newStuff;
NSString *newStuffString;
nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
newStuff = NSMakeRange(origSelRange.location,
proposedSelRangePtr->location
- origSelRange.location);
newStuffString = [*partialStringPtr substringWithRange: newStuff];
if ([newStuffString rangeOfCharacterFromSet: nonDigits
options: NSLiteralSearch].location != NSNotFound) {
*error = @"不是數字";
return (NO);
} else {
*error = nil;
return (YES);
}
}
///////////////////////////////////////////////////////////////
從文本框獲取十六進制數據的代碼
char singleNumberString[3] = {'\0','\0','\0'};
uint32_t singleNumber = 0;
uint32_t i = 0;
NSMutableData *data = [NSMutableData data];
//從文本框獲取到得數據
const char *buf = [[_hexToSendTextField text] UTF8String];
//轉換爲十六進制
for(i = 0; i < strlen(buf); i+=2)
{
if(((i+1) < len && isxdigit(buf) && (isxdigit(buf[i+1])))
{
singleNumberString[0] = buf;
singleNumberString[1] = buf[i+1];
sscanf(singleNumberString, "%x", &singleNumber);
[data appendBytes:(void*)(&tmp) length:1];
}
else
{
break;
}
}
//輸出
NSLog(@"%@", data);
/////////////////////////////////////////////////////////////
點擊 UITextView 輸入文字,光標都從最初點開始
- (void)textViewDidChangeSelection:(UITextView *)textView
{
NSRange range;
range.location = 0;
range.length = 0;
textView.selectedRange = range;
}
///////////////////////////////////////////////////////////
軟鍵盤
在登錄頁面要實現用戶名和密碼,密碼要是點點格式,引入當前頁面光標要停留在用戶名選項,軟鍵盤要彈出界面。如下圖:
彈出鍵盤:
[username becomeFirstResponder];
取消鍵盤:
[username resignFirstResponder];
密碼保護:
password.secureTextEntry=YES;
//////////////////////////////////////////////////////////////////
.UITextField的初始化和設置
textField = [[UITextField alloc] initWithFrame:CGRectMake(120.0f, 80.0f, 150.0f, 30.0f)];
[textField setBorderStyle:UITextBorderStyleRoundedRect]; //外框類型
textField.placeholder = @"password"; //默認顯示的字
textField.secureTextEntry = YES; //密碼
textField.autocorrectionType = UITextAutocorrectionTypeNo;
textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
textField.returnKeyType = UIReturnKeyDone;
textField.clearButtonMode = UITextFieldViewModeWhileEditing; //編輯時會出現個修改X
textField.delegate = self;
.要實現的Delegate方法,關閉鍵盤
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[self.textField resignFirstResponder];
return YES;
}
. 可以在UITextField使用下面方法,按return鍵返回
-(IBAction) textFieldDone:(id) sender
{
[textFieldName resignFirstResponder];
}
鏈接TextField控件的"Did end on exit"
////////////////////////////////////////////////////////////////////
限制輸入文本的長度
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (range.location >= MAX_LENGTH)
return NO; // return NO to not change text
return YES;
}
if (textField.text.length >= 10 && range.length == 0)
return NO;
return YES;
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([textField.text length] > MAXLENGTH)
{
textField.text = [textField.text substringToIndex:MAXLENGTH-1];
return NO;
}
return YES;
}
//////////////////////////////////////////////////////////////////////
使用UITextFieldDelegate來隱藏鍵盤
在iPhone界面上,時常會需要當用戶輸入完內容後,隱藏鍵盤。 當然有很多方法,今天只介紹使用UITextFieldDelegate這個協議實現隱藏鍵盤。
其實很簡單, 需要三步:
. 在你的控制器類中,加入UITextFieldDelegate這個協議
如:@interface AddItemViewController : UIViewController <UITextFieldDelegate>
. 在使用了UITextFieldDelegate協議的控制器類的實現中,加入- (BOOL)textFieldShouldReturn:方法。
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
//設置焦點:
[UITextField becomeFirstResponder];
. 將xib文件中的TextField控件的delegate變量指向到之前使用UITextFieldDelegate協議的那個控制器類,將 TextField的delegate IBOutlet變量右鍵鏈接到前面的控制器類的實例上。或者使用代碼方式,指定相關TextField的delegate變量。
- (void)viewDidLoad
{
[super viewDidLoad];
itemNameField.delegate = self;
priceField.delegate = self;
}
textField = [[UITextField alloc] initWithFrame:CGRectMake(120.0f, 80.0f, 150.0f, 30.0f)];
[textField setBorderStyle:UITextBorderStyleRoundedRect]; //外框類型
textField.placeholder = @"password"; //默認顯示的字
textField.secureTextEntry = YES; //密碼
textField.autocorrectionType = UITextAutocorrectionTypeNo;
textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
textField.returnKeyType = UIReturnKeyDone;
textField.clearButtonMode = UITextFieldViewModeWhileEditing; //編輯時會出現個修改X
textField.delegate = self;
.要實現的Delegate方法,關閉鍵盤
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[self.textField resignFirstResponder];
return YES;
}
. 可以在UITextField使用下面方法,按return鍵返回
-(IBAction) textFieldDone:(id) sender
{
[textFieldName resignFirstResponder];
}
鏈接TextField控件的"Did end on exit"
最右側加圖片是以下代碼,
UIImageView *imgv=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];
text.rightView=imgv;
text.rightViewMode = UITextFieldViewModeAlways;
如果是在最左側加圖片就換成:
text.leftView=imgv;
text.leftViewMode = UITextFieldViewModeAlways;
UITextField 繼承自 UIControl,此類中有一個屬性contentVerticalAlignment
所以想讓UITextField裏面的text垂直居中可以這樣寫:
text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
查看函數的方法:
按住command鍵雙擊進入函數聲明
按住alt鍵雙擊進入doc文檔
///////////////////////////////////////////////////////////////
文本框常用方法:
如何用程序刪除文本框中選中的文本
[textView delete: nil];
///////////////////////////////////////////////////////////////
如何限制文本框只能輸入數字:
建立NSNumberFormatter的子類,增加這個方法,將formatter鏈接至文本框。
- (BOOL) isPartialStringValid: (NSString **) partialStringPtr
proposedSelectedRange: (NSRangePointer) proposedSelRangePtr
originalString: (NSString *) origString
originalSelectedRange: (NSRange) origSelRange
errorDescription: (NSString **) error
{
NSCharacterSet *nonDigits;
NSRange newStuff;
NSString *newStuffString;
nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
newStuff = NSMakeRange(origSelRange.location,
proposedSelRangePtr->location
- origSelRange.location);
newStuffString = [*partialStringPtr substringWithRange: newStuff];
if ([newStuffString rangeOfCharacterFromSet: nonDigits
options: NSLiteralSearch].location != NSNotFound) {
*error = @"不是數字";
return (NO);
} else {
*error = nil;
return (YES);
}
}
///////////////////////////////////////////////////////////////
從文本框獲取十六進制數據的代碼
char singleNumberString[3] = {'\0','\0','\0'};
uint32_t singleNumber = 0;
uint32_t i = 0;
NSMutableData *data = [NSMutableData data];
//從文本框獲取到得數據
const char *buf = [[_hexToSendTextField text] UTF8String];
//轉換爲十六進制
for(i = 0; i < strlen(buf); i+=2)
{
if(((i+1) < len && isxdigit(buf) && (isxdigit(buf[i+1])))
{
singleNumberString[0] = buf;
singleNumberString[1] = buf[i+1];
sscanf(singleNumberString, "%x", &singleNumber);
[data appendBytes:(void*)(&tmp) length:1];
}
else
{
break;
}
}
//輸出
NSLog(@"%@", data);
/////////////////////////////////////////////////////////////
點擊 UITextView 輸入文字,光標都從最初點開始
- (void)textViewDidChangeSelection:(UITextView *)textView
{
NSRange range;
range.location = 0;
range.length = 0;
textView.selectedRange = range;
}
///////////////////////////////////////////////////////////
軟鍵盤
在登錄頁面要實現用戶名和密碼,密碼要是點點格式,引入當前頁面光標要停留在用戶名選項,軟鍵盤要彈出界面。如下圖:
彈出鍵盤:
[username becomeFirstResponder];
取消鍵盤:
[username resignFirstResponder];
密碼保護:
password.secureTextEntry=YES;
//////////////////////////////////////////////////////////////////
.UITextField的初始化和設置
textField = [[UITextField alloc] initWithFrame:CGRectMake(120.0f, 80.0f, 150.0f, 30.0f)];
[textField setBorderStyle:UITextBorderStyleRoundedRect]; //外框類型
textField.placeholder = @"password"; //默認顯示的字
textField.secureTextEntry = YES; //密碼
textField.autocorrectionType = UITextAutocorrectionTypeNo;
textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
textField.returnKeyType = UIReturnKeyDone;
textField.clearButtonMode = UITextFieldViewModeWhileEditing; //編輯時會出現個修改X
textField.delegate = self;
.要實現的Delegate方法,關閉鍵盤
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[self.textField resignFirstResponder];
return YES;
}
. 可以在UITextField使用下面方法,按return鍵返回
-(IBAction) textFieldDone:(id) sender
{
[textFieldName resignFirstResponder];
}
鏈接TextField控件的"Did end on exit"
////////////////////////////////////////////////////////////////////
限制輸入文本的長度
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (range.location >= MAX_LENGTH)
return NO; // return NO to not change text
return YES;
}
if (textField.text.length >= 10 && range.length == 0)
return NO;
return YES;
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([textField.text length] > MAXLENGTH)
{
textField.text = [textField.text substringToIndex:MAXLENGTH-1];
return NO;
}
return YES;
}
//////////////////////////////////////////////////////////////////////
使用UITextFieldDelegate來隱藏鍵盤
在iPhone界面上,時常會需要當用戶輸入完內容後,隱藏鍵盤。 當然有很多方法,今天只介紹使用UITextFieldDelegate這個協議實現隱藏鍵盤。
其實很簡單, 需要三步:
. 在你的控制器類中,加入UITextFieldDelegate這個協議
如:@interface AddItemViewController : UIViewController <UITextFieldDelegate>
. 在使用了UITextFieldDelegate協議的控制器類的實現中,加入- (BOOL)textFieldShouldReturn:方法。
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
//設置焦點:
[UITextField becomeFirstResponder];
. 將xib文件中的TextField控件的delegate變量指向到之前使用UITextFieldDelegate協議的那個控制器類,將 TextField的delegate IBOutlet變量右鍵鏈接到前面的控制器類的實例上。或者使用代碼方式,指定相關TextField的delegate變量。
- (void)viewDidLoad
{
[super viewDidLoad];
itemNameField.delegate = self;
priceField.delegate = self;
}