#import "UITextFieldController.h"
#define NUMBERS @"0123456789\n"
#define CHARACTER_NUM @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
@interface UITextFieldController()
@end
@implementation UITextFieldController
const int MAX_STARWORDS_LENGTH = 8;
- (void)viewDidLoad {
[super viewDidLoad];
//初始化UITextField并设置位置及大小
UITextField *textField=[[UITextField alloc]initWithFrame:CGRectMake(40, 40, 260, 40)];
//设置样式
textField.borderStyle=UITextBorderStyleRoundedRect;
//设置输入框的背景颜色 如果使用背景图片背景边框会被忽略掉
textField.backgroundColor = [UIColor whiteColor];
//设置背景
textField.background=[UIImage imageNamed:@"ss_textbox@2x.png"];
//设置不可用状态背景
textField.disabledBackground=[UIImage imageNamed:@"ss_textbox@2x.png"];
//输入框hint提示
textField.placeholder = @"请输入用户名";
//设置输入框内容的字体样式和大小
textField.font = [UIFont fontWithName:@"Arial" size:16.0f];
//设置字体颜色
textField.textColor = [UIColor blueColor];
//右边删除图标 用以清空输入框所有内容
textField.clearButtonMode = UITextFieldViewModeAlways;
//密码输入:每输入一个字符就变成点
textField.secureTextEntry = NO;
//是否纠错
textField.autocorrectionType = UITextAutocorrectionTypeNo;
//再次编辑就清空
textField.clearsOnBeginEditing=YES;
//文字对齐方式
textField.textAlignment=UITextAlignmentLeft;
//内容垂直对齐方式 UITextField继承自UIControl,此类中有一个属性contentVerticalAlignment
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
//设置为YES时文本会自动缩小以适应文本窗口大小.默认是保持原来大小,而让长文本滚动
textField.adjustsFontSizeToFitWidth = YES;
//设置自动缩小显示的最小字体大小
textField.minimumFontSize = 16;
//设置键盘的样式
textField.keyboardType = UIKeyboardTypeDefault;
//所有字母都转为大写
textField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
//回车键变成什么键:标有Search的蓝色按钮
textField.returnKeyType = UIReturnKeySearch;
//键盘外观
textField.keyboardAppearance=UIKeyboardAppearanceDefault;
//最左侧加图片是以下代码
UIImageView *image=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ic_search.png"]];
textField.leftView=image;
textField.leftViewMode = UITextFieldViewModeAlways;
//=======================代理========================
//设置代理 用于实现协议
textField.delegate = self;
//因为UITextField继承于UIcontrol,如下操作可以用于控制输入框内的文本的长度和输入限制
[textField addTarget:self action:@selector(pick) forControlEvents:UIControlEventEditingChanged];
[self.view addSubview:textField];
}
- (void)pick{
NSLog(@"文本内容改变");
}
//以下实现 UITextFieldDelegate 中约定的行为
#pragma mark UITextFieldDelegate Method
//是否允许输入框可以进行编辑
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
//返回YES表示可以进行编辑,返回NO表示不可以
return YES;
}
//became first responder (成为第一响应者,显示键盘)
- (void)textFieldDidBeginEditing:(UITextField *)textField{
//一旦进行编辑变回响应的方法
}
//返回YES表示允许停止编辑并收起键盘,返回NO则表示不允许停止编辑
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
return YES;
}
- (void)textFieldDidEndEditing:(UITextField *)textField{
//一旦结束编辑响应的方法
}
//此方法在内容改变的时候调用,限制输入框的内的文本的长度
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
// //限制输入框的内的文本的长度,当长度大于等于10的时候,文本长度不会增加,也不能进行删除操作
// if (textField.text.length >= MAX_STARWORDS_LENGTH){
// return NO;
// }else{
// return YES;
// }
NSString *toBeString = textField.text;
//获取高亮部分
UITextRange *selectedRange = [textField markedTextRange];
UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
// 没有高亮选择的字,则对已输入的文字进行字数统计和限制
if (!position)
{
if (toBeString.length > MAX_STARWORDS_LENGTH)
{
NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];
if (rangeIndex.length == 1)
{
textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];
}
else
{
NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];
textField.text = [toBeString substringWithRange:rangeRange];
}
return NO;
}else{
return YES;
}
return YES;
}else{
return NO;
}
}
//当删除按钮存在的情况下,用此方法控制按钮是否有效,默认是可以进行删除的
- (BOOL)textFieldShouldClear:(UITextField *)textField{
return YES;
}
//点击return键的响应事件
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
//注销第一响应者,收起键盘
[textField resignFirstResponder];
return YES;
}
@end
IOS学习之UITextField
最新推荐文章于 2024-04-11 23:06:31 发布