iOS UIModalPresentationFormSheet风格下的键盘隐藏
1. 在UIModalPresentationFormSheet(iPad device, without a UINavigationController)下的视图中,如果使用
[inputView resignFirstResponder];
是不能把Keyboard收起的,需要使用以下的方式:
A:
@try
{
Class UIKeyboardImpl = NSClassFromString(@"UIKeyboardImpl");
id activeInstance = [UIKeyboardImpl performSelector:@selector(activeInstance)];
[activeInstance performSelector:@selector(dismissKeyboard)];
}
@catch (NSException *exception)
{
NSLog(@"Exception : %@", exception);
}
上面的方法由于用到了Apple的Private API, 将无法通过审核。
B. 之所以在UIModalPresentationFormSheet下的视图无法用resignFirstResponder是因为在进入到此模式的后,系统将下列中方法返回值置为了YES:
- (BOOL)disablesAutomaticKeyboardDismissal
{
return YES;
}// disablesAutomaticKeyboardDismissal, 此方法是在UIViewController中。
将返回值改为NO后,即可正常使用resignFirstResponsder方法隐藏键盘,但在UINavigationController中此方式依然失效,以下将补充说明此情况。
2. 如果你显示的UIModalPresentationFormSheet视图是在UINavigationController, 那么在UINavigationController的rootViewController中重写
disablesAutomaticKeyboardDismissal方法也将无法启用resignFirstResponder方法效果,因为显示的视图是UINavigationController的,应该在UINavigationController中
来重写disablesAutomaticKeyboardDismissal方法。这里通过将扩展的方式来达到在UINavigationController中重写此方法的目的:
#import <UIKit/UIKit.h> @interface UINavigationController (UINavigationController_KeyboardDismiss) - (BOOL)disablesAutomaticKeyboardDismissal; @end #import "UINavigationController+UINavigationController_KeyboardDismiss.h" @implementation UINavigationController (UINavigationController_KeyboardDismiss) - (BOOL)disablesAutomaticKeyboardDismissal
{
return NO;
}// disablesAutomaticKeyboardDismissal @end
经过UINavigationController Category对disablesAutomaticKeyboardDismissal方法的重写后,即可解决resignFirstResponder方法失效的问题。
参考:http://stackoverflow.com/questions/3372333/ipad-keyboard-will-not-dismiss-if-modal-view-controller-presentation-style-is-ui
iOS UIModalPresentationFormSheet风格下的键盘隐藏的更多相关文章
- iOS 键盘隐藏
IOS7 点击空白处隐藏键盘的几种方法 IOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能取消键盘的显示,对于用户体验来说很不友好,我 ...
- 在 Android 的文字编辑控件 (TEdit) 中, 如何按下 Enter 就隐藏虚拟键盘
在 Windows 的应用中,我们常常为了让使用者能够快速输入,在Edit元件中的onKeyUp或者 onKeyDown 事件中主动侦测使用者输入的字元是否有换行符号 (Enter),当使用者按下了E ...
- IOS中键盘隐藏几种方式
在ios开发中,经常需要输入信息.输入信息有两种方式: UITextField和UITextView.信息输入完成后,需要隐藏键盘,下面为大家介绍几种隐藏键盘的方式. <一> 点击键盘上的 ...
- ios下虚拟键盘出现"搜索"字样
最近在开发过程中,发现用户输入想要检索的内容,弹出虚拟键盘,在安卓机上虚拟键盘最右下角会有‘搜索’字样,而ios上虚拟键盘最右下角只有‘换行’字样, 这样用户体验就会大打折扣. 安卓机上虚拟键盘 io ...
- 【好程序员笔记分享】——iOS开发之纯代码键盘退出
-iOS培训,iOS学习-------型技术博客.期待与您交流!------------ iOS开发之纯代码键盘退出(非常简单) iOS开发之纯代码键盘退出 前面说到了好几次关于键盘退出的,但 ...
- 【转】swift实现ios类似微信输入框跟随键盘弹出的效果
swift实现ios类似微信输入框跟随键盘弹出的效果 为什么要做这个效果 在聊天app,例如微信中,你会注意到一个效果,就是在你点击输入框时输入框会跟随键盘一起向上弹出,当你点击其他地方时,输入框又会 ...
- 移动web在ios和android下点击元素出现阴影问题
移动web开发经验总结 1.-webkit-tap-highlight-color:rgba(255,255,255,0)可以同时屏蔽ios和android下点击元素时出现的阴影.备注:transp ...
- ios 弹出不同的键盘
iOS 提供了10种键盘类型,在开发中,我们可以根据不同的需求,选择不同的键盘样式,例如,当我们只需要输入手机号码时,可以选择纯数字类型的键盘(NumbersAndPunctuation),当我们需要 ...
- IOS客户端UIwebview下web页面闪屏问题
基于ios客户端uiwebview下的web页面,在其内容高度大于视窗高度时,如果点击超过视窗下文档的底部按钮,收缩内容高度,会发生闪屏问题. 外因是由文档的高度大于视窗的高度所致,本质原因未知. 解 ...
随机推荐
- 转:数据库的快照隔离级别(Snapshot Isolation)
数据库的快照隔离级别(Snapshot Isolation) 隔离级别定义事务处理数据读取操作的隔离程度,在SQL Server中,隔离级别只会影响读操作申请的共享锁(Shared Lock),而 ...
- 王兴内部讲话:为什么中国To B企业都活得这么惨
本文节选自美团创始人王兴内部讲话.在讲话中,王兴罕见地分享了他对全球和中国宏观经济的理解,谈了他对 TO B 业务的深度思考.全文近 15000 字,干货非常多,值得你花时间阅读. 我们今天讲一下餐饮 ...
- php 验证访问浏览器是电脑还是手机
//判断如果为手机用户则 if(checkmobile()==true) { $url=$_SERVER["HTTP_HOST"]; $urlHost=GetHost($url); ...
- 【大话QT之十三】系统软件自己主动部署实现方案
本篇文章是对[大话QT之十二]基于CTK Plugin Framework的插件版本号动态升级文章的补充,在上篇文章中我们阐述的重点是新版本号的插件已经下载到plugins文件夹后应该怎样更新本地正在 ...
- Controller Service Dao总结
今天主要学习了Controller,Service,Dao的相关知识 我的理解主要是这种,Controller主要与前台页面打交道 比方:前台页面有一个"加入用户"的提交butto ...
- JSON的String字符串与Java的List列表对象的相互转换
1.JSON的String字符串与Java的List列表对象的相互转换 在前端: 1.如果json是List对象转换的,可以直接遍历json,读取数据. 2.如果是需要把前端的List对象转换为jso ...
- python学习之assert语句
assert语句用于代码检测并报警. 语法 assert code... 例子 # -*- coding: utf-8 -*- # assert语句说明 a,b= 1,23 a == 2 assert ...
- 李洪强iOS开发之iOS技术博客
李洪强iOS开发之iOS技术博客 注意:访问博客请直接点击博客,不要点击后面的RSS地址 博客地址 RSS地址 南峰子的技术博客 剑尖博客 图拉鼎 Henry Lee Dev Talk ...
- Action的mapping.findFoward(forwardName)必须要在struts-config.xml中的对应的action节点配置一个forward节点
比如说你有个SampleAction,在execute(ActionMapping mapping, ...)中写了句 return mapping.findForward("some_pa ...
- jQuery 时间戳转化成时间
//时间转换 function formatDate(now) { var now= new Date(now); var year=now.getFullYear(); ...