获取系统键盘所在的View

转载 2016年05月31日 10:44:22

实际开发过程中,会有自定义键盘的需求,比如,需要添加一个表情键盘。本文提供一种解决方法,思路就是通过获取系统键盘所在的view,然后自定义一个view覆盖在系统键盘view上,接下来的事情就非常简单了,就是在自定义的view里做任何自己想做的事情。

这个方法的关键在于获取系统键盘所在的view。要完成这个,需要监听UIKeyboardDidShowNotification这个系统通知(注意:如果在UIKeyboardWillShowNotification这个系统通知里处理是不会得到键盘所在view的)。代码如下:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];

keyboardDidShow函数实现:

- (void)keyboardDidShow:(NSNotification *)notification{
    UIView *keyboardView = [self getKeyboardView];
}

关键函数getKeyboardView的实现,该函数返回键盘所在view:

- (UIView *)getKeyboardView{
    UIView *result = nil;
    NSArray *windowsArray = [UIApplication sharedApplication].windows;
    for (UIView *tmpWindow in windowsArray) {
        NSArray *viewArray = [tmpWindow subviews];
        for (UIView *tmpView  in viewArray) {
            if ([[NSString stringWithUTF8String:object_getClassName(tmpView)] isEqualToString:@"UIPeripheralHostView"]) {
                result = tmpView;
                break;
            }
        }
        
        if (result != nil) {
            break;
        }
    }
    
    return result;
}

下面的事情就简单了,只要自定义一个view,并调用上面得到的keyboardView的addSubView函数,即可将自定义view覆盖在键盘view之上。然后,做自己想做的事情吧。

相关文章推荐

iOS - 获取系统键盘所在View

代码是从Stack Overflow找到的,好用- (UIView *)keyboardView { UIWindow* tempWindow; //Because we cant ge...

iOS开发之获取系统键盘的详细信息

通过这篇文章,能对系统自带的一些东西, 有一点深入的理解 /** * UIKIT_EXTERN NSString *const UIKeyboardWillShowNotificati...

iOS开发之自定义键盘(一)

这里我以两个textfield为例//** 这里没有把键盘写成一个单独的View, 只提供一个思路 /{ UITextField *textPhone; UITextField *...

android 自定义输入法研究(一)

android自定义布局输入法

getApplication()和getApplicationContext()区别

相同二者使用结果相同,我们写个代码分别打印二者返回结果,发现两个方法获取的是同一个对象。

彻底搞定Android开发中软键盘的常见问题

软键盘显示的原理 软件盘的本质是什么?软键盘其实是一个Dialog。 InputMethodService为我们的输入法创建了一个Dialog,并且将该Dialog的Window的某些参数...

Android 总结:自定义键盘实现原理和三种实例详解

一、实现原理实现软键盘主要用到了系统的两个类 Keyboard 和 KeyboardView 1. 在xml文件中定义 2. 以Dialog的形式来实现 3. 继承EditText自定义view来实现...

Android keyboardView字体样式修改

问题 问题原因 解决办法问题使用自定义键盘的时候发现: 显示的键盘上的字体好像不对,被加了阴影。 并且键盘上有>1个字符的键上的文案(key.labels==”00”这种)还被加粗了。 后来找到...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)