获取系统键盘所在的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...
  • yuqingzhude
  • yuqingzhude
  • 2017年01月11日 15:55
  • 1310

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

通过这篇文章,能对系统自带的一些东西, 有一点深入的理解 /** * UIKIT_EXTERN NSString *const UIKeyboardWillShowNotificati...
  • sinat_30162391
  • sinat_30162391
  • 2016年03月09日 16:11
  • 1278

IOS开发键盘上方的view随着键盘的弹出、收起、键盘输入法改变而移动

1、ios自定义系统弹出键盘上方的view 这篇文章解决的一个开发中的实际问题就是:当弹出键盘时,自定义键盘上方的view。目前就我的经验来看,有两种解决方法。一个就是利用UITextFie...
  • crystal_198874
  • crystal_198874
  • 2015年02月26日 16:58
  • 2958

两种自定义系统弹出键盘上方的view

我们在很多的应用中,都可能会遇到,在弹出的键盘上方的view,添加一些控件来作辅助功能,下面我通过2种情况来介绍:// 屏幕的物理高度 #define ScreenHeight [UIScreen...
  • humingtao2013
  • humingtao2013
  • 2014年08月19日 18:16
  • 3439

iOS动态获取键盘高度实现流畅的键盘输入框开发

新项目迭代中有个类似短信或QQ微信输入框随键盘推出的UI需求。 按照常用方法有两种: 1.注册通知动态获取键盘高度 2.自定义UITextField的inputView 下面是亲测流畅有效的通...
  • Nefertari_YinC
  • Nefertari_YinC
  • 2016年01月08日 14:35
  • 1010

IOS开发之自定义系统弹出键盘上方的view

这篇文章解决的一个开发中的实际问题就是:当弹出键盘时,自定义键盘上方的view。目前就我的经验来看,有两种解决方法。一个就是利用UITextField或者UITextView的inputAccesso...
  • majiakun1
  • majiakun1
  • 2014年11月18日 09:26
  • 13168

iOS开发TextField根据键盘自适应位置

iOS开发TextField根据键盘自适应位置
  • l2i2j2
  • l2i2j2
  • 2016年05月06日 23:28
  • 2613

iOS横屏获取键盘高度为0、键盘侧面弹出问题

iOS横屏获取键盘高度为0、键盘侧面弹出问题在做视频横竖屏的时候,经常出现键盘的bug,大致分为两种: 1、横屏状态下键盘从home键方向弹出 2、获取键盘高度有时会出现为0的情况 注:可以使用...
  • zhaotao0617
  • zhaotao0617
  • 2017年11月22日 17:29
  • 227

ios中在ipad键盘上添加自定义view

最近在开发ipad的过程中,遇到一个需求就是需要在iPad键盘中添加一个字数统计的view.首先这个需求,字数统计的功能可以暂且不看,然后最主要的问题是怎么将这个view添加到键盘上.在网上搜了很久,...
  • loiszxy
  • loiszxy
  • 2016年10月16日 17:58
  • 327

iOS下Html页面中input获取焦点弹出键盘时挡住input解决方案

问题描述 iOS系统下,移动web页面,inpu获取焦点弹出系统虚拟键盘时,偶尔会出现挡住input的情况,尽管概率不大,但是十分影响用户体验。 问题重现 原始页面:页面中有head...
  • s3590024
  • s3590024
  • 2016年11月17日 17:48
  • 11390
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:获取系统键盘所在的View
举报原因:
原因补充:

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