1、删除前一输入的字符
@implementation UITextFieldBack
- (void)myDeleteBackward {
if ([self conformsToProtocol:@protocol(UITextInput)]){
// iOS5 and later
[self deleteBackward];
// Or do below line if you are not deploy-targeting 5.0 or above and want to avoid warnings
//[textField performSelector:@selector(deleteBackward)];
} else {
@try {
//check current selected range
NSRange selectedRange = [[self valueForKey:@"selectionRange"] rangeValue];
if (selectedRange.location == NSNotFound){
selectedRange = NSMakeRange([[self text] length], 0);
}
if (selectedRange.location < 1){
return;
}
//delete one char
NSRange deleteRange = (selectedRange.length > 0) ? selectedRange : NSMakeRange(selectedRange.location - 1, 1);
self.text = [self.text stringByReplacingCharactersInRange:deleteRange withString:@""];
//adjust the selected range to reflect the changes
selectedRange.location = deleteRange.location;
selectedRange.length = 0;
[self setValue:[NSValue valueWithRange:selectedRange] forKey:@"selectionRange"];
} @catch (NSException *exception) {
NSLog(@"deleteBackword failed but catched. %@", exception);
} @finally {}
}
}
@end
2、TextField只要有输入,马上清掉旧值
@interface UITextFieldEx : UITextField
{
BOOL deleteFirst;
}
@property(nonatomic)BOOL deleteFirst;
@end
@implementation UITextFieldEx
@synthesize deleteFirst;
-(id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
deleteFirst = YES;
}
return self;
}
@end
在textFieldDelegate中实现:
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
UITextFieldEx *field = (UITextFieldEx *)textField;
field.deleteFirst = YES;
}
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
UITextFieldEx *field = (UITextFieldEx *)textField;
if (field.deleteFirst) {
field.text = @"";
field.deleteFirst = NO;
}
return YES;
}
3、LeftView
UILabel *currencyLabel = [[UILabel alloc] initWithFrame:CGRectZero];//CGRectZero相当于CGRectMake(0,0,0,0)
currencyLabel.text = [[[NSNumberFormatter alloc] init] currencySymbol];//初始化Label内容返回接受者的本地货币符号
currencyLabel.font = self.myTextField.font;
[currencyLabel sizeToFit];//调整和移动接收者的视图,它只是包含它自己的视图。
self.myTextField.leftView = currencyLabel;
self.myTextField.leftViewMode = UITextFieldViewModeAlways;//设置左视图一直显示
4、输入事件
//当UITextField输入文字后触发的事件
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
BOOL result = YES;
if ([textField isEqual:self.myTextField]) {
NSString *wholeText = [textField.text stringByReplacingCharactersInRange:range withString:string];//追加后输入的字符串
[self calculateAndDisplayTextFieldLengthWithText:wholeText];//重新计算字符长度
}
return result;
}
5、键盘遮挡问题(视图上移)