键盘处理

Posted 西贝了爷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了键盘处理相关的知识,希望对你有一定的参考价值。

一、键盘风格  

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;

 

二:开启/隐藏键盘

开启:[theTextField becomeFirstResponder];

隐藏:[theTextField resignFirstResponder];

[self.view endEditing:YES] ; 这个方法可以让整个view取消第一响应者,从而让所有控件的键盘隐藏。

//点击空白处关闭键盘
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ [self.view endEditing:YES]; }

 三:安全文本输入   textView.secureTextEntry=YES;

统计字符:

1、UITextView

- (void)textViewDidChange:(UITextView *)textView
{
    int count = [textView.text length];
    //这里的count就是字符个数了
}

2、UITextField

方法一:

自己先为UITextField的Editing Changed事件添加一个响应方法

-(IBAction)valuechange//m_TextField是UITextField的一个IBOutlet
{
     int count = [m_TextField.text length];
     //count就是当前的字符个数

    //下边是将字符限制在140以内
    if ([m_TextField.text length]>140) {
        [m_TextField setText:[m_TextField.text substringToIndex:140]];//多出140时,只取前140个字符
    }
}
 

方法二:

在代理方法:-(BOOL)textField:(UITextField *)textFieldshouldChangeCharactersInRange:(NSRange)rangereplacementString:(NSString*)string,判断range.length的值来判断输入的是回格还是其它字符

 

响应Return键:

1、UITextView

//代理方法

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if (1 == range.length) {//按下回格键
        return YES;
    }
    if ([text isEqualToString:@"\n"]) {//按下return键
        //这里隐藏键盘,不做任何处理
        [textView resignFirstResponder];
        return NO;
    }else {
        if ([textView.text length] < 140) {//判断字符个数
            return YES;
        }  
    }
    return NO;
}

2、UITextField

这个直接有代理方法哈

- (BOOL)textFieldShouldReturn:(UITextField *)textField

 

以上是关于键盘处理的主要内容,如果未能解决你的问题,请参考以下文章

软输入键盘隐藏编辑文本

在片段替换上显示/隐藏 Android 软键盘

打开键盘隐藏片段下方的工具栏

EditText 软键盘总是在视图寻呼机的片段上打开

为啥Android不会暂停视图完全被软键盘挡住的片段?

如何在片段中隐藏键盘?