zoukankan      html  css  js  c++  java
  • 自定义软键盘

    我想用这篇文章简单记录下如何自定义软键盘。

    软键盘使用的几种方法:

    1:使用系统自带键盘

    2:使用用户自定义的键盘来取代系统自定义的键盘

    3:让自定义的键盘和系统的键盘共同存在

    4:直接修改系统键盘

    下面详细介绍

    1:使用系统自定义键盘

    iphone已经给我们提供了系统自定义的软键盘,并且提供了适用与大多数情况下的软键盘,比如:有的是专门的数字键盘,有的是数字和字符都含有的软键盘,这个可以通过属性(KeyboardType)来设定。

    typedef enum

    {

        UIKeyboardTypeDefault,                // Default type for the current input method.

        UIKeyboardTypeASCIICapable,           // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active

        UIKeyboardTypeNumbersAndPunctuation// Numbers and assorted punctuation.

        UIKeyboardTypeURL,                    // A type optimized for URL entry (shows . / .com prominently).

        UIKeyboardTypeNumberPad,              // A number pad (0-9). Suitable for PIN entry.

        UIKeyboardTypePhonePad,               // A phone pad (1-9, *, 0, #, with letters under the numbers).

        UIKeyboardTypeNamePhonePad,           // A type optimized for entering a person's name or phone number.

        UIKeyboardTypeEmailAddress,           // A type optimized for multiple email address entry (shows space @ . prominently).

    #if __IPHONE_4_1 <= __IPHONE_OS_VERSION_MAX_ALLOWED

        UIKeyboardTypeDecimalPad,             // A number pad with a decimal point.

    #endif

        UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated

    } UIKeyboardType;

    从上面我们可以看出,Apple已经给我们提供了好几种形式的输入软件键盘,我们仅仅通过设置属性(KeyboardType)就可以调用相应的键盘,比如:

    textField.keyboardType=UIKeyboardTypeNumberPad

    1.1:有写键盘,我们还可以自定义软键盘Reture键的类型,

    typedef enum

    {

        UIReturnKeyDefault,

        UIReturnKeyGo,

        UIReturnKeyGoogle,

        UIReturnKeyJoin,

        UIReturnKeyNext,

        UIReturnKeyRoute,

        UIReturnKeySearch,

        UIReturnKeySend,

        UIReturnKeyYahoo,

        UIReturnKeyDone,

        UIReturnKeyEmergencyCall,

    } UIReturnKeyType;

    同样的,apple也是已经给我们提供了比较多的return键盘的类型。

    这样我们就可以绑定UITextField输入控件调出软键盘后单击reture键盘,触发的函数,

    第一步,要帮顶UITextField的委托

    第二步:定义return绑定的回调函数:

    参考代码:

    m_userName.returnKeyType = UIReturnKeyNext;

    m_userName.delegate= self;


    - (BOOL)textFieldShouldReturn:(UITextField *)textField

    {

      //在这里面写入单击键盘RETURE键,之后相应的函数。

      return YES;

    }

    这里我想另外的添加一点知识:

    如何让UITextField获取键盘输入焦点:[self.m_userPassword becomeFirstResponder];

    我们使用自定义键盘,关键就是选择不同的键盘类型,然后根据实际情况,处理对应的回调函数

    2:完全使用用户自定义的键盘来取代系统自定义的键盘

    这里就是我们放弃系统自带的键盘,然后使用我们自定义的键盘视图

    参考代码:

    UIView *keyView ;

    Self.textFieldView.inputView = keyView;//输入我们自定义的键盘

    self.textFieldView.inputAccessoryView = nil;

    运行程序后,当再次调用键盘后就会出现我们自定义的键盘。

    3:让自定义的键盘和系统的键盘共同存在

    同上面的自定义键盘一样,常见一个新的XIB文件以及一个想关联的一个视图类,

    参考代码:

    UIView *keyView ;

    Self.textFieldView.inputView = nil;//输入我们自定义的键盘

    self.textFieldView.inputAccessoryView = keyView;

    对你2、3的参考代码你可能就会明白,inputView和inputAccessoryView属性的作用了。

    我们可以将键盘看成有两部分组成(当然,键盘还会有其他的部分组成),一部分是inputView,一部分是InputAccessoryView,并且,inputView在系统键盘的下面的部分,我们调用的系统默认键盘的时候,我们看到的部分就是这个InputView(输入视图),而这个InputAccessoryView就是键盘顶部的一个部分,当我Nil的时候则不显示,当我们给这个属性赋值的时候,就会显示这个我们添加的视图。

    她就像,比如,UITableView的UITableViewHeaderView的那部分视图,如果不设置就看不到,如果设置就可以看到。

    当然,仅仅有这些还是不够的,我们还要为我们自定的键盘中的按键添加对应的响应函数。

    THE END!

  • 相关阅读:
    Java多线程:sleep()、yield()和join()方法浅析
    Java多线程:InterruptedException出现时的处理方法
    Java多线程:中断机制interrupt以及InterruptedException出现的原因
    Java多线程:哲学家就餐问题和生产者消费者问题
    Java多线程:wait()和notify()方法详解
    Java多线程:多线程的Synchronized详解
    Java多线程:线程的实现、生命周期和优先级以及与进程之间的区别
    ie6下:png图片不透明 和 背景图片为png的节点的内部标签单击事件不响应
    实现每次触发事件后隔一段时间后才能再次触发事件
    window.open窗口居中和窗口最大化
  • 原文地址:https://www.cnblogs.com/xingchen/p/2157446.html
Copyright © 2011-2022 走看看