1. 通知
UITextField派生自UIControl,所以UIControl類(lèi)中的通知系統(tǒng)在文本字段中也可以使用漠畜。
除了UIControl類(lèi)的標(biāo)準(zhǔn)事件笑窜,你還可以使用下列UITextField類(lèi)特有的事件:
UITextFieldTextDidBeginEditingNotification
UITextFieldTextDidChangeNotification
UITextFieldTextDidEndEditingNotification
當(dāng)文本字段退出編輯模式時(shí)觸發(fā),通知的object屬性存儲(chǔ)了最終文本蹭沛。
因?yàn)槲谋咀侄我褂面I盤(pán)輸入文字,所以下面這些事件發(fā)生時(shí)章鲤,也會(huì)發(fā)送動(dòng)作通知
UIKeyboardWillShowNotification // 鍵盤(pán)顯示之前發(fā)送
UIKeyboardDidShowNotification // 鍵盤(pán)顯示之后發(fā)送
UIKeyboardWillHideNotification // 鍵盤(pán)隱藏之前發(fā)送
UIKeyboardDidHideNotification // 鍵盤(pán)隱藏之后發(fā)送
2. 限制只能輸入特定的字符
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *limitStr = @"0123456789\n";
NSCharacterSet *characterSet= [[NSCharacterSet characterSetWithCharactersInString:limitStr] invertedSet];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:characterSet] componentsJoinedByString:@""];
BOOL canChange = [string isEqualToString:filtered];
return canChange;
}
”0123456789\n” (代表可以輸入數(shù)字和換行摊灭,請(qǐng)注意這個(gè)\n,如果不寫(xiě)這個(gè)败徊,Done按鍵將不會(huì)觸發(fā).如果用在SearchBar中帚呼,將會(huì)不觸發(fā)Search事件,因?yàn)槟阕约合拗撇蛔屳斎隲n皱蹦。)
當(dāng)然煤杀,你還可以在以上方法return之前眷蜈,提示用戶只能輸入數(shù)字。
3. 限制只能輸入一定長(zhǎng)度的字符
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
{
// string為此時(shí)輸入的那個(gè)字符
// 返回YES就是可以改變輸入框的值沈自,NO相反
if ([string isEqualToString:@"\n"]) {
return YES;
}
NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];
// 如果輸入框內(nèi)容大于20則彈出警告
if ([toBeString length] > 20) {
textField.text = [toBeString substringToIndex:20];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"最多不能超過(guò)20字" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
return NO;
}
return YES;
}