iOS开发中,经常要用到输入框,可默认情况下,输入框出来之后,除非点击键盘上面的“Done”或“Next”按钮才能将其隐藏。站在用户体验的角度上看,这种情况很不友好,尤其是不能突显苹果操作的便捷性。

总结出了两种方法:

第一种,是最常见的,就是给最外层的view添加一个手势响应UITapGestureRecognizer,代码如下:

- (void)viewDidLoad
{
    [super viewDidLoad];
    UITapGestureRecognizer *tapGr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)];
    tapGr.cancelsTouchesInView = NO;
    [self.view addGestureRecognizer:tapGr];
}
 
-(void)viewTapped:(UITapGestureRecognizer*)tapGr
{
    [activitySearchBar resignFirstResponder];
}

第二种,稍微复杂些,不过思路也差不多,就是将最外层的view作为一个UIScrollView,点击即可将当前的焦点交给UIScrollView,代码如下:

#import <UIKit/UIKit.h>
#import "BaseData.h"
 
@interface BaseTextFieldView : UIScrollView {
    id target;
    int ypos,y;
}
-(void)setTarget:(id)d;
 
@end

  

#import "BaseTextFieldView.h"
 
@implementation BaseTextFieldView
 
- (id)initWithFrame:(CGRect)frame {
     
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code.
    }
    return self;
}
 
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
    [target performSelector:@selector(endEdit)];
    return YES;
}
 
-(void)setTarget:(id)d
{
    ypos = 0;
    target = d;
}
 
-(BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
{
    return YES;
}
 
- (void)dealloc {
    [super dealloc];
}

 在需要调用的Controller的.h文件添加对UITextFieldDelegate的引用,代码如下:

#import "BaseTextFieldView.h"

  

@interface DemoController : UIViewController <UITextFieldDelegate>{
     
}

 将xib文件的view,改成对BaseTextFieldView的引用,如图:

    

在Controller的.m文件中,添加代码:

[(BaseTextFieldView *)self.view setTarget:self];

  

以上两种方法经测试均可实现。

iOS 点击屏幕空白区隐藏键盘方法的更多相关文章

  1. Swift 3 点击屏幕任意位置隐藏键盘

    func hideKeyboardWhenTappedAround() { let tap: UITapGestureRecognizer = UITapGestureRecognizer(targe ...

  2. android 实现点击listview 空白地方隐藏菜单

    思路:重写ListView的setOnTouchListener事件: ListView.setOnTouchListener(new OnTouchListener(){ @Override pub ...

  3. IOS学习:隐藏键盘方法

    1.点击界面的其它空白地方隐藏      由于UIViewController是继承自UIResponder的,所以可以覆写- (void)touchesBegan:(NSSet *)touches ...

  4. iOS开发隐藏键盘方法总结

    以下为大家带来我整理总结的几种隐藏键盘的方法. 一.隐藏自身软键盘 当对于有多个UITextField控件都想通过点击"Return"来隐藏自身软键盘的情况,这时的最好办法是使用D ...

  5. iOS - 点击背景视图收起系统键盘

    我们在 IOS 开发中经常会需要在输入框输入数据后,需要收起系统键盘,比如由于手机屏幕不是很大,可能由于输入信息后,系统键盘就会遮挡住下一步的按钮,而系统键盘有没有收起键,所以我们可以实现点击背景视图 ...

  6. iOS 手写输入法奔溃,替换隐藏键盘方法

    {   UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:se ...

  7. swift textfiled 输入完毕 return 隐藏键盘 方法

    学习swift 真是件头疼的事情 会的人少,又没有OC基础,所以 且学切珍惜吧. 在做登录的时候发现textfiled 自动调用键盘后不能隐藏?头疼 ~~~~询问了好多人 终于有人自写解答 为了方便后 ...

  8. 李洪强iOS开发之- 点击屏幕遮挡键盘

    李洪强iOS开发之- 点击屏幕遮挡键盘 实现的效果:  01 - 给当前的view添加点击事件,使点击屏幕的时候,让键盘退出 /** * 点击屏幕 隐藏键盘 * * @param tap */-(vo ...

  9. 【Flutter 实战】全局点击空白处隐藏键盘

    老孟导读:为什么要实现点击空白处隐藏键盘?因为这是 iOS 平台的默认行为,Android 平台由于其弹出的键盘右上角默认带有关闭键盘的按钮,所以点击空白处不会隐藏键盘. 对于单个页面来说,通过为 T ...

随机推荐

  1. apache (order allow,deny or deny,allow)

    平台:"rhel6.2" 实验内容: "测试apache‘order allow,deny’ or ‘order deny,allow’ 功能" 配置文件:&q ...

  2. spring boot 文件上传 文件过大 FileUploadBase$SizeLimitExceed

    application.properties中加入 multipart.maxFileSizemultipart.maxRequestSize Spring Boot 1.3.x或者之前 multip ...

  3. 基于百度地图SDK和Elasticsearch GEO查询的地理围栏分析系统(2)-查询实现

    在上一篇博客中,我们准备好了数据.现在数据已经以我们需要的格式,存放在Elasticsearch中了. 本文讲述如何在Elasticsearch中进行空间GEO查询和聚合查询,以及如何准备ajax接口 ...

  4. 【转】sed命令n,N,d,D,p,P,h,H,g,G,x解析

    1. sed执行模板=sed '模式{命令1;命令2}' 即逐行读入模式空间,执行命令,最后输出打印出来 2. 为方便下面,先说下p和P,p打印当前模式空间内容,追加到默认输出之后,P打印当前模式空间 ...

  5. Java基础系列--Executor框架(一)

    文章来源:http://www.cnblogs.com/V1haoge/p/8393618.html 一.Executor框架介绍 Executor框架是JDK1.5之后出现的,位于juc包中,是并发 ...

  6. spring之集合注入

    list: <bean id="userAction" class="com.xx.action.UserAction"> <property ...

  7. 网易云免费OSS服务用做Markdown图床或博客图片外链

    我使用据说是Windows下最好用的Markdown编辑器“MarkdownPad2”(个人感觉还是Visual Code+Markdown插件666)写Markdown,在贴图方面遇到一个问题,于是 ...

  8. Go笔记-结构体

    [定义] type identifier struct{ field1 type1 field2 type2 ... } // 声明 var s identifier identifier.field ...

  9. Java设计模式——策略模式

    策略模式的定义: 策略模式其实特别好理解,俗话说得好,条条大路通罗马,做的都是一件事,实现的方式却可以千万种,在这种情况下,如何使得每个人都可以根据自己的喜好来选择具体的方式,在调用时可以根据不同方式 ...

  10. NOIP 2017 Day 0. 游记

    刚从曲师大试机回来... 不巧,我抽到了和去年一样的考场,还是那么难用的XP,还是那么难用的键盘. 似乎在考场上有一股奇怪的力量,我本来在自己电脑上打板子打的没那么快,但是试机的那段时间..说出来你们 ...