iOS中如何自定制键盘呢? - Go语言中文社区

iOS中如何自定制键盘呢?


很简陋的demo,主要是实现了自定制键盘的具体思路,里边具体“按键”要自己实现。下面只实现了对textField的键盘监控,textView的键盘是一样的。先看看效果吧:

这里写图片描述

设计模式:单例

#import <UIKit/UIKit.h>

@interface CKeyboardView : UIView

+ (CKeyboardView *)shareInstance;

@end

因此,我们完成了第一步:

textField.inputView = [CKeyboardView shareInstance];

第二步,怎么捕捉到当前输入的textField呢?

我们可以获取当前的第一响应者:
然而,这个方法是Apple私有的,如果使用了,上架会被拒!
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)];

因此,我采用了第二种方式获取,即:

#import <UIKit/UIKit.h>

@interface UIResponder (FirstResponder)

//使用时只需要对UIResponder类调用该类方法即可获得当前第一响应者
+ (id)getFirstResponder;

@end

那么,textField需要自己特定的键盘类型,比如数字、电话、邮件等等,textField本身有keyboardType属性,当然我们也可以通过为它增加我们自定制键盘特制的属性,这里用到了runTime。

#import <UIKit/UIKit.h>

typedef enum : NSUInteger {
    CustomKeyboardTypeNormal,       // 默认就Normal
    CustomKeyboardTypeNumber,       // 数字键盘
} CustomKeyboardType;

@interface UITextField (CKeyboardType)

// 自定制键盘类型
@property (nonatomic,assign) CustomKeyboardType customKeyboardType;

@end

最后,我们在CKeyboardView对键盘进行监控,得到引起键盘弹起的第一响应者textField,然后我们就可以显示出相应的键盘款式。
这个demo在github上,点击可以查看下载。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/rolandMan_/article/details/53641823
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-04-11 01:11:56
  • 阅读 ( 1046 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢