文档章节

ios实现点击空白处关闭键盘

Jack鸿燊
 Jack鸿燊
发布于 2015/09/23 21:15
字数 456
阅读 2479
收藏 4

写了个小应用,遇到了点击空白处不能关闭键盘的问题以及切换view会导致home页面先上去再下来的问题。把解决的办法记下来

主要使用了一个navigation。view也只有两级。如下图所示

遇到的问题是如果我设置了其中任一项参数之后没有关闭键盘,然后直接点击左上角的“back”,就会出现home view先填充满整个view,然后又被navigation的navigationbar挤下来了。为了解决掉这个问题,要么在切换之前把键盘关掉,也得实现点击空白处就能关闭键盘。那么下面就是代码

  1. 切换前关闭键盘

    要切换view,那么原来的view肯定会先调用方法viewWillDisappear,那我们就在调用该方法的时候把键盘关掉,那么切换过去的时候键盘就已经处于关闭状态了。重新实现viewWillDisappear如下:

       

-(void)viewWillDisappear:(BOOL)animated{
    [self IsValidToPop];
    
    [super viewWillAppear:animated];
    [self.view endEditing:YES];
}

  其中IsValidToPop是在切换的时候判断当前设置完的参数的有效性,并保存参数到NSUserDefault中

  2.  点击空白处关闭键盘

   在ViewDidLoad方法中添加如下代码,就可以实现了

    UITapGestureRecognizer *tapGr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)];
    tapGr.cancelsTouchesInView = NO;
    [self.view addGestureRecognizer:tapGr];

 viewTapped是自己定义的方法

-(void)viewTapped:(UITapGestureRecognizer*)tapGr
{
    [ipText resignFirstResponder];
    [portText resignFirstResponder];
    [bufferText resignFirstResponder];
    [self IsValidToPop];
}

  主要功能就是让当前view里面所有的text窗口都交出第一响应的权限。然后校验参数并保存。

© 著作权归作者所有

Jack鸿燊
粉丝 4
博文 10
码字总数 4667
作品 0
海淀
程序员
私信 提问
使用 Xamarin 开发 iOS 键盘扩展(含网络访问)

版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/...

walter lv
02/24
0
0
iOS 9 又有漏洞:教你如何绕过密码看相册

无论你的手机是用四位数密码锁住了还是用Touch ID锁住了都可以。真可怕,万一里面有不可告人的内容呢? 过去的每一年 iOS 更新换代,我们都会见到类似的报告:用户可以在不输入锁屏密码的前提...

oschina
2015/09/22
14.5K
24
Flutter开发中的一些Tips

学习Flutter也有一阵子了。闲着没事,用了公司一个已经凉凉的App设计图来练手。当然了接口不可能用的了,所以都是些死数据,实现效果可以说是很完美了(得到了设计的认可。。。)。当然自己也...

唯鹿
06/12
0
0
ios系统在微信浏览器中的bug-键盘弹出再收起后,界面点击区域失效

最近ios发布新版本系统12.1,随着部分用户的系统更新,一些问题也渐渐暴露出来。。。 公司做个活动页,在ios系统中弹出登录界面,在键盘弹出再收起后,反应点击区域会无效 在H5端是没法监控键...

醉雨
09/06
24
0
C++ Primer Plus(十七)——输入、输出和文件

cerr和clog对象与标准错误流对应,但cerr不被缓冲。 2. streambuf类为缓冲区提供了内存,并提供了用于填充缓冲区、访问缓冲区内容、刷新缓冲区和管理缓冲区内存的类方法。iosbase类表示流的一...

吃一堑消化不良
2017/11/04
18
0

没有更多内容

加载失败,请刷新页面

加载更多

RxJava进行单元测试的方式

@Test public void completeTask_retrievedTaskIsComplete() { // Given a new task in the persistent repository final Task newTask = new Task(TITLE, ""); ......

SuShine
25分钟前
5
0
正则表达式大全

检验手机号码 # 要求:手机号码必须为11位数字,以1开头,第二位为1或5或8。import redef verify_mobile(): mob = input("请输入手机号码:") ret = re.match(r"1[358]\d{9}", m......

彩色泡泡糖
29分钟前
5
0
QT之border-image属性

一、border-image的兼容性 border-image可以说是CSS3中的一员大将,将来一定会大放光彩,其应用潜力真的是非常的惊人。可惜目前支持的浏览器有限,仅Firefox3.5,chrome浏览器,Safari3+支持...

shzwork
30分钟前
6
0
Kubernetes Operator简易教程

1. 安装operator-sdk //安装 operator-sdk$ apt-get install operator-sdk.....$ operator-sdk versionoperator-sdk version: v0.7.0$ go versiongo version go1.11.4 darwin/amd64 2......

Robotcl_Blog
30分钟前
5
0
再谈DAG任务分解和Shuffle RDD

1、DagScheduler分析 DagScheduler功能主要是负责RDD的各个stage的分解和任务提交。Stage分解是从触发任务调度过程的finalStage开始倒推寻找父stage,如果父stage没有提交任务则循环提交缺失...

守望者之父
36分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部