首先在 viewWillAppear 方法中注册监听相应的键盘通知,并且要在 viewWillDisappear 方法中注销通知
- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated];
//注册键盘显示通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardDidShow:) name:UIKeyboardWillShowNotification object:nil];
//注册键盘隐藏通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
} -(void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated];
//注销键盘显示通知
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}

处理键盘弹出和收起事件

// 键盘出现处理事件
- (void)handleKeyboardDidShow:(NSNotification *)notification
{
// NSNotification中的 userInfo字典中包含键盘的位置和大小等信息
NSDictionary *userInfo = [notification userInfo];
// UIKeyboardAnimationDurationUserInfoKey 对应键盘弹出的动画时间
CGFloat animationDuration = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue];
// UIKeyboardAnimationCurveUserInfoKey 对应键盘弹出的动画类型
NSInteger animationCurve = [[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] integerValue];
//数字彩,数字键盘添加“完成”按钮
if (doneInKeyboardButton){ [UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:animationDuration];//设置添加按钮的动画时间
[UIView setAnimationCurve:(UIViewAnimationCurve)animationCurve];//设置添加按钮的动画类型 //设置自定制按钮的添加位置(这里为数字键盘添加“完成”按钮)
doneInKeyboardButton.transform=CGAffineTransformMakeTranslation(, -); [UIView commitAnimations];
} } // 键盘消失处理事件
- (void)handleKeyboardWillHide:(NSNotification *)notification
{
// NSNotification中的 userInfo字典中包含键盘的位置和大小等信息
NSDictionary *userInfo = [notification userInfo];
// UIKeyboardAnimationDurationUserInfoKey 对应键盘收起的动画时间
CGFloat animationDuration = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]; if (doneInKeyboardButton.superview)
{
[UIView animateWithDuration:animationDuration animations:^{
//动画内容,将自定制按钮移回初始位置
doneInKeyboardButton.transform=CGAffineTransformIdentity;
} completion:^(BOOL finished) {
//动画结束后移除自定制的按钮
[doneInKeyboardButton removeFromSuperview];
}]; }
}

在textField代理中调用加载按钮方法

#pragma mark -- UITextFieldDelegate
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
//初始化数字键盘的“完成”按钮
if(doneInKeyboardButton.superview==nil)
[self configDoneInKeyBoardButton];
}
- (void) addDoneButton{
//获得键盘所在的window视图
NSArray *array= [[UIApplication sharedApplication]windows]; for (UIWindow *window in array) { NSString *str=NSStringFromClass([window class]); if ([str isEqualToString:@"UIRemoteKeyboardWindow"]) { [window addSubview:doneInKeyboardButton]; } } } //点击“完成”按钮事件,收起键盘
-(void)finishAction{
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];//关闭键盘
}

如果用户安装了其他输入法,会出错,因此在APPDelegate中禁止第三方的输入法

-(BOOL)application:(UIApplication *)application shouldAllowExtensionPointIdentifier:(NSString *)extensionPointIdentifier{

    return NO;
}

iOS 系统数字键盘左下角加确定按钮的更多相关文章

  1. ios在数字键盘左下角添加“完成”按钮的实现原理

    本文转载至 http://www.itnose.net/detail/6145865.html 最近要在系统弹出的数字键盘上的左下角额外添加一个自定制的完成按钮,于是研究了一下系统自带键盘添加自定制按 ...

  2. ios自定义数字键盘

    因为项目又一个提现的功能,textfiled文本框输入需要弹出数字键盘,首先想到的就是设置textfiled的keyboardType为numberPad,此时你会看到如下的效果:   但是很遗憾这样 ...

  3. vue项目引入FastClick组件解决IOS系统下h5页面中的按钮点击延迟,连续点击无反应的问题

    异常描述: ios系统手机中访问h5页面,按钮点击有延迟,连续点击卡顿.无反应. 异常原因: 这要追溯至 2007 年初.苹果公司在发布首款 iPhone 前夕,遇到一个问题:当时的网站都是为大屏幕设 ...

  4. iOS为数字键盘增加完成按钮

    在输入价格的时候,要求弹出的键盘只能有数字和小数点.弹出的键盘没有完成键,想要退出键盘可以点击退出,但是为了更好的用户体验,在键盘上增加UIToolbar. 设置ToolBar: - (UIToolb ...

  5. 微信JSSDK多图片上传并且解决IOS系统上传一直加载的问题

    微信多图片上传必须挨个上传,也就是不能并行,得串行: 那么我们可以定义一个如下所示的上传函数: var serverIds = []; function uploadImages(localImage ...

  6. 禁止 IOS 系统 数字 变超链 (自动识别为电话号码)

    在测试中发现iPad上的Safari总会把长串数字识别为电话号码,文字变成蓝色,点击还会弹出菜单添加到通讯录. 别的地方倒也罢了,如果在用户名中出现数字(手机注册新浪微博的话用户名就是“手机用户xxx ...

  7. iOS数字键盘自定义按键

    UIKeyboardTypeNumberPad 数字键盘自定义按键 最近做一个搜索用户的功能,这里使用了UISearchBar.由于搜索的方式只有手机号码,所以这里的键盘要限制为数字输入,可以这么做: ...

  8. ios 指定页面禁用第三方键盘,使用系统的键盘

    因为项目需要,需要在添加银行卡和提现页面使用数字键盘, 如果用户没有安装第三方键盘是没啥大问题的,但是如果用户手机安装了第三方的键盘的话,有时候会无法调用起第三方的数字键盘,或者第三方键盘样式不符合, ...

  9. 【笔记】移动端H5数字键盘input type=number的处理(IOS和Android)

    在Vue中的项目,基于VUX-UI开发,一个常见的需求: 1.金额输入框 2.弹出数字键盘 3.仅支持输入两位小数,限制最大11位数,不允许0开头 后续:与UI沟通后, 思路调整为限制输入,并减少正则 ...

随机推荐

  1. html5拖拽事件 xhr2 实现文件上传 含进度条

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  2. 通过实现System.IComparable接口的CompareTo方法对两个类进行比较

    假设现在有一个学生类 class Student { int age; public Student(int age) { this.age = age; } } 要使学生类之间能进行比较,实现Sys ...

  3. js 闭包

    this.color = "blue"; (function(_this) { setInterval(function() { if (_this.color !== " ...

  4. js小功能整理

    /** * 判断是否包含字符串某字符串 * @param {[type]} str [被检测的字符串] * @param {[type]} substr [检测是否含有的字符串] * @return ...

  5. HotSpot JVM常用参数设置

    转自:https://www.zybuluo.com/jewes/note/57352 选项的分类 Hotspot JVM提供以下三大类选项: 1. 标准选项:这类选项的功能是很稳定的,在后续版本中也 ...

  6. View绘制机制

    View 绘制机制 1. View 树的绘图流程 当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 me ...

  7. variadic function 的使用

    最近在看<the c programming language> K&R 7.3章 Variable-length Argument Lists  变长参数列表, 笔记一下用法 1 ...

  8. TeXstudio 编写Latex论文的若干问题

    TeXstudio 编写Latex论文的若干问题解决方案总结       问题1: 如何安装TeXstudio 以及 Texstudio当中的中文字体使用问题.   一.如何安装TeXstudio 很 ...

  9. Xcode 8 支持 iOS 7 真机解决过程记录

    领导要求不放弃iOS 7 用户,所以我们Xcode 8 上面支持ios 7 必须要解决! 解决方法(过程): 1.应用程序--Xcode(原来的Xcode 7)-- 显示包内容--Contents-- ...

  10. nginx_https

    nginx使用ssl模块配置HTTPS支持   默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引 ...