我有一個UITextField,我希望對每個字符敲擊,第一個字符被刪除。所以我每次只在我的textField中有一個字符。此外,我希望它顯示控制檯日誌中的每一個水龍頭。刪除最後一個字符UITextField
我該怎麼做?
我有一個UITextField,我希望對每個字符敲擊,第一個字符被刪除。所以我每次只在我的textField中有一個字符。此外,我希望它顯示控制檯日誌中的每一個水龍頭。刪除最後一個字符UITextField
我該怎麼做?
您需要實現shouldChangeCharactersInRange
方法在您的文本字段代表:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:
(NSRange)range replacementString:(NSString *)string{
textField.text = @"";
return YES;
}
您可能需要檢查的範圍和字符串值涵蓋所有可能的情況下(比如複製/粘貼操作)。該代碼只是將文本字段的值設置爲最後輸入的字符。
的UITextField從UIControl繼承,這樣你就可以使用目標 - 動作機制是UIControl類的一部分:
[textField addTarget:self action:@selector(updateTextField) forControlEvents:UIControlEventValueChanged];
在操作方法,你可以只用最後一個字符替換的UITextField的文字和在控制檯中記錄該字符。需要注意的是因爲改變的UITextField的文本將再次導致「updateTextField」的消息被髮送第二次的目標,你將需要某種機制來確定是否更新與否:
- (void)updateTextField {
if(updateTextField == YES) {
updateTextField = NO;
NSString *lastChar = [textField.text substringFromIndex:[textField.text length]];
[textField setText:lastChar];
NSLog(@"%@", lastChar);
} else {
updateTextField = YES;
}
}
或者類似的東西無論如何...
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.text.length > 8) {
return NO;
}
return YES;
}