UITextField与键盘——IOS

来源:互联网 发布:淘宝新店怎么刷流量 编辑:程序博客网 时间:2024/05/20 18:40

一、键盘

1、键盘风格   

UIKit框架支持8种风格键盘。

  1. typedef enum  
  2.     UIKeyboardTypeDefault,                // 默认键盘:支持所有字符   
  3.     UIKeyboardTypeASCIICapable,           // 支持ASCII的默认键盘   
  4.     UIKeyboardTypeNumbersAndPunctuation,  // 标准电话键盘,支持+*#等符号   
  5.     UIKeyboardTypeURL,                    // URL键盘,有.com按钮;只支持URL字符   
  6.     UIKeyboardTypeNumberPad,              //数字键盘   
  7.     UIKeyboardTypePhonePad,               // 电话键盘   
  8.     UIKeyboardTypeNamePhonePad,           // 电话键盘,也支持输入人名字   
  9.     UIKeyboardTypeEmailAddress,           // 用于输入电子邮件地址的键盘   
  10. UIKeyboardType;  

用法用例:

textView.keyboardtype = UIKeyboardTypeNumberPad;

2、键盘外观

typedef enum {
UIKeyboardAppearanceDefault, 默认外观,浅灰色
UIKeyboardAppearanceAlert,     深灰 石墨色

} UIReturnKeyType;


用法用例:

textView.keyboardAppearance=UIKeyboardAppearanceDefault;

3、回车键

typedef enum {

        UIReturnKeyDefault, 默认 灰色按钮,标有Return
        UIReturnKeyGo,      标有Go的蓝色按钮
        UIReturnKeyGoogle, 标有Google的蓝色按钮,用语搜索
        UIReturnKeyJoin, 标有Join的蓝色按钮
        UIReturnKeyNext, 标有Next的蓝色按钮
        UIReturnKeyRoute, 标有Route的蓝色按钮
        UIReturnKeySearch, 标有Search的蓝色按钮
        UIReturnKeySend, 标有Send的蓝色按钮
        UIReturnKeyYahoo, 标有Yahoo的蓝色按钮
        UIReturnKeyYahoo, 标有Yahoo的蓝色按钮
        UIReturnKeyEmergencyCall, 紧急呼叫按钮

    } UIReturnKeyType;

用法用例:

textView.returnKeyType=UIReturnKeyGo;

4、自动大写

  1. typedef enum  
  2.     UITextAutocapitalizationTypeNone, //不自动大写   
  3.     UITextAutocapitalizationTypeWords, //单词首字母大写   
  4.     UITextAutocapitalizationTypeSentences, //句子首字母大写   
  5.     UITextAutocapitalizationTypeAllCharacters, //所有字母大写   
  6. UITextAutocapitalizationType;  
用法用例:

textField.autocapitalizationType UITextAutocapitalizationTypeWords;

5、自动更正

  1. typedef enum  
  2.     UITextAutocorrectionTypeDefault,//默认   
  3.     UITextAutocorrectionTypeNo,//不自动更正   
  4.     UITextAutocorrectionTypeYes,//自动更正   
  5. UITextAutocorrectionType 
用法用例:

textField.autocorrectionType UITextAutocorrectionTypeYes;

6、安全文本输入

textView.secureTextEntry=YES;

开启安全输入主要是用于密码或一些私人数据的输入,此时会禁用自动更正和自此缓存。


二、UITextField的键盘相关信息

注意:设置UITextField的代理及添加相关代理协议

1.文本基本属性设置

text.backgroundColor = [UIColor whiteColor];   //设置输入框的背景颜色,此时设置为白色 如果使用了自定义的背景图片边框会被忽略掉 

text.placeholder = @"password";   //当输入框没有内容时,水印提示 提示内容为password

text.font = [UIFont fontWithName:@"Arial" size:20.0f];   //设置输入框内容的字体样式和大小

text.textColor = [UIColor redColor];   //设置字体颜色

text.clearButtonMode = UITextFieldViewModeAlways;  //输入框中是否有个叉号,在什么时候显示,用于一次性删除输入框中的内容

text.clearsOnBeginEditing = YES;    //再次编辑就清空

text.textAlignment = UITextAlignmentLeft;   //内容对齐方式

text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;  //内容的垂直对齐方式  UITextField继承自UIControl,此类中有一个属性contentVerticalAlignment

text.adjustsFontSizeToFitWidth = YES;  //设置为YES时文本会自动缩小以适应文本窗口大小.默认是保持原来大小,而让长文本滚动 

text.minimumFontSize = 20;   //设置自动缩小显示的最小字体大小

text.keyboardType = UIKeyboardTypeNumberPad;   //设置键盘的样式

text.delegate = self;   //设置代理 用于实现协议

[self.window addSubview:text];   //把textfield加到视图中

UIImageView *image=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];  //最右侧加图片是以下代码   左侧类似

text.rightView=image;

text.rightViewMode = UITextFieldViewModeAlways; 


2.重写绘制行为

除了UITextField对象的风格选项,你还可以定制化UITextField对象,为他添加许多不同的重写方法,来改变文本字段的显示行为。这些方法都会返回一个CGRect结构,制定了文本字段每个部件的边界范围。以下方法都可以重写。


– textRectForBounds:      //重写来重置文字区域
– drawTextInRect:         //改变绘文字属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.
– placeholderRectForBounds:  //重写来重置占位符区域
– drawPlaceholderInRect:  //重写改变绘制占位符属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.
– borderRectForBounds:  //重写来重置边缘区域
– editingRectForBounds:  //重写来重置编辑区域
– clearButtonRectForBounds:  //重写来重置clearButton位置,改变size可能导致button的图片失真
– leftViewRectForBounds:

– rightViewRectForBounds:


3.委托方法

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

//返回一个BOOL值,指定是否循序文本字段开始编辑 

    return YES;  
}  

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

//开始编辑时触发,文本字段将成为first responder  

}  

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

//返回BOOL值,指定是否允许文本字段结束编辑,当编辑结束,文本字段会让出first responder  

   //要想在用户结束编辑时阻止文本字段消失,可以返回NO     

//这对一些文本字段必须始终保持活跃状态的程序很有用,比如即时消

    return NO;  
}  

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

//当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。  
//这对于想要加入撤销选项的应用程序特别有用  
//可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。     
//要防止文字被改变可以返回NO  

//这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中  

     return YES;  
}  

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

//返回一个BOOL值指明是否允许根据用户请求清除内容  

//可以设置在特定条件下才允许清除内容 

    return YES;  
}  

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

//返回一个BOOL值,指明是否允许在按下回车键时结束编辑  
  //如果允许要调用resignFirstResponder 方法,这回导致结束编辑,而键盘会被收起[textField resignFirstResponder];

//查一下resign这个单词的意思就明白这个方法了 

     return YES;  

}  


4.通知


UITextField派生自UIControl,所以UIControl类中的通知系统在文本字段中也可以使用。除了UIControl类的标准事件,你还可以使用下列UITextField类特有的事件


UITextFieldTextDidBeginEditingNotification
UITextFieldTextDidChangeNotification
UITextFieldTextDidEndEditingNotification

当文本字段退出编辑模式时触发。通知的object属性存储了最终文本。


因为文本字段要使用键盘输入文字,所以下面这些事件发生时,也会发送动作通知


UIKeyboardWillShowNotification   //键盘显示之前发送
UIKeyboardDidShowNotification    //键盘显示之后发送
UIKeyboardWillHideNotification   //键盘隐藏之前发送

UIKeyboardDidHideNotification    //键盘隐藏之后发送



0 0
原创粉丝点击