与时俱进的IT

UI(五)键盘设置UITextField

2018-07-30  本文已影响0人  社会主义顶梁鹿

要使用输入框的代理方法

1、导入代理名字

2、挂上代理->如果代理方法不触发,说明没有挂上代理

3、实现代理的方法

 1.导入代理的名字

@interface AppDelegate ()

@end

@implementation AppDelegate

 UITextField:->UIControl的子类->UIView的子类

 UITextField:文本输入框

 它的属性⬇️⬇️⬇️⬇️⬇️

 keyboardType:键盘的样式

{UIKeyboardTypeDefault,

 UIKeyboardTypeASCIICapable,

 UIKeyboardTypeNumbersAndPunctuation,

 UIKeyboardTypeURL,

 UIKeyboardTypeNumberPad,

UIKeyboardTypePhonePad, 电话类型 1-9

 UIKeyboardTypeNamePhonePad,

UIKeyboardTypeEmailAddress, 邮箱地址

 UIKeyboardTypeDecimalPad

 UIKeyboardTypeTwitter

UIKeyboardTypeWebSearch 网页搜索 有小地球样式

 UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable,

}

 text:可以获得或者改变输入框的内容

 borderStyle:输入框的样式

 {UITextBorderStyleNone,没有样式

 UITextBorderStyleLine,黑线边框

 UITextBorderStyleBezel,带阴影的黑线

UITextBorderStyleRoundedRect 圆角}

 placeholder:提示文字(例如输入框里面的“请输入密码”)

 textColor:颜色

 font:字号

 textAlignment:对齐方式

 adjustsFontSizeToFitWidth:让文字根据宽度自动适配

 minimumFontSize:设置文字的最小字号

 ✅✅✅delegate:代理

 {

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;

 //只要开始就会调用

- (void)textFieldDidBeginEditing:(UITextField *)textField;

 //编辑结束的时候使用 必须return YES;才能使用

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField;

 //编辑结束的时候使用

- (void)textFieldDidEndEditing:(UITextField *)textField;

 //可以获得用户每输入一次的文字及位置,必须return YES;才能使用

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;

 //点击清除按钮的时候调用 必须return YES;才能使用

- (BOOL)textFieldShouldClear:(UITextField *)textField;

 //当点击Return键的时候会触发

- (BOOL)textFieldShouldReturn:(UITextField *)textField;

 }

 clearButtonMode:设置清除按钮什么时候显示

 {UITextFieldViewModeNever, 永远都不显示

 UITextFieldViewModeWhileEditing, 当编辑的时候显示

UITextFieldViewModeUnlessEditing, 当不在编辑的时候显示

UITextFieldViewModeAlways 永远显示}

 leftView:左侧的视图->输入框左侧的视图----并不是设置了左侧右侧视图就可以显示出来,需要配合使用下面属性

 leftViewMode:设置什么情况下显示左侧的视图,跟上面清除按钮类似

 inputView:键盘上面的视图(例如输入法的表情按钮区域)

 inputAccessoryView:键盘区域的视图

 键盘的方法(代理方法)⬇️⬇️⬇️⬇️⬇️写出来就自动调用

 ©开始编辑的时候调用

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;

- (void)textFieldDidBeginEditing:(UITextField*)textField;

 ©结束编辑的时候调用

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField;

- (void)textFieldDidEndEditing:(UITextField*)textField;

 ©文字内容发生改变的时候

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;

 ©点击清除按钮的时候调用

- (BOOL)textFieldShouldClear:(UITextField*)textField;

 ©点击Return键的时候调用

- (BOOL)textFieldShouldReturn:(UITextField *)textField;

 专为输入框准备的响应事件⬇️⬇️⬇️⬇️⬇️

 UIControlEventEditingDidBegin          UIControlEventEditingChanged           UIControlEventEditingDidEnd            UIControlEventEditingDidEndOnExit        

 注意点:

 1、如果想使用代理方法,必须先导入代理

 2、如果代理方法没有触发,看是否挂上了代理

 在使用左右侧视图的时候,要配合左右侧视图的model来使用

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

[self.window makeKeyAndVisible];

UITextField *accTextField = [[UITextField alloc]initWithFrame:CGRectMake(10, 40, CGRectGetWidth([UIScreen mainScreen].bounds)-20,40)];

[self.window addSubview:accTextField];

//    accTextField.backgroundColor = [UIColor brownColor];

 //设置输入框样式

    accTextField.borderStyle = UITextBorderStyleBezel;

 //提示文字

accTextField.placeholder = @"请输入文字";

 //清除按钮

    accTextField.clearButtonMode = UITextFieldViewModeWhileEditing;

 //设置一个视图

UIImageView *leftImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 40, 40)];

 [self.window addSubview:leftImageView];

 //设置一张图片

leftImageView.image = [UIImage imageNamed:@"left"];

    accTextField.leftView = leftImageView;

    accTextField.leftViewMode = UITextFieldViewModeAlways;

 //键盘的样式

    accTextField.keyboardType = UIKeyboardTypeAlphabet;

UIView *inputV = [[UIView alloc]initWithFrame:CGRectMake(0, 0, CGRectGetWidth([UIScreen mainScreen].bounds), 40)];

    inputV.backgroundColor = [UIColor brownColor]; 

[self.window addSubview:inputV];

 accTextField.inputView = inputV;

    accTextField.inputAccessoryView = inputV;

 //2、想使用代理方法 必须挂上代理***

accTextField.delegate = self;

return YES;

}

//3、实现代理的方法

//可以获得用户每输入一次的文字及位置,必须return YES;才能使用

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

NSLog(@"%@",string);

 return YES;

}

//点击清除按钮的时候调用

- (BOOL)textFieldShouldClear:(UITextField *)textField{

    NSLog(@"清除");

 return YES;

}

- (void)textFieldDidBeginEditing:(UITextField *)textField{

    NSLog(@"开始");

}

//编辑结束的时候使用

- (void)textFieldDidEndEditing:(UITextField *)textField{

NSLog(@"%@",textField.text);

}

- (BOOL)textFieldShouldReturn:(UITextField *)textField{

 //回收键盘->输入结束

    [textField resignFirstResponder];

NSLog(@"%@",textField.text);

 return YES;

}

上一篇下一篇

猜你喜欢

热点阅读