iOS 开发之 - 关闭键盘 退出键盘 的5种方式_IOS

iOS 开发之 - 关闭键盘 退出键盘 的5种方式

 1、点击编辑区以外的地方(UIView)

2、点击编辑区域以外的地方(UIControl)

3、使用制作收起键盘的按钮

4、使用判断输入字元

5、关于键盘遮蔽的问题

1,点击编辑区以外的地方(UIView)

这是一种很直觉的方法,当不再需要使用虚拟键盘时,只要点击虚拟键盘和编辑区域外的地方,就可以将键盘收起,下面程式码是在 UIView 中内建的触碰事件方法函式,您可以参考 Touch Panel / 触碰萤幕 / 压力感应器的基本使用方式一文,找到更多关于触碰事件的方法函式。

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
  if (![myTextView isExclusiveTouch]) {
    [myTextView resignFirstResponder];
  }
}

如果要使用此方式请务必记得,你操作画面的 Custom Class 一定要是 UIView 才行。
画面的 Custom Class 为 UIView

2. 点击编辑区域以外的地方(UIControl)

收起虚拟键盘的方式与前一种相同,但是如果你的触碰事件里已经且写满了程式码,那么就可以考虑使用,UIControl 的 Touch Up Inside 事件来收起键盘,方法是将以下程式码与 UIControl 的 Touch Up Inside 事件连结即可。

- (IBAction)dismissKeyboard:(id)sender {
  [myTextView resignFirstResponder];
}

 如果要使用此方式请务必记得,你操作画面的 Custom Class 一定要是 UIControl 才行。

画面的 Custom Class 为 UIControl

将收起键盘的方法与 UIControl 事件连结

 3. 使用制作收起键盘的按钮 

当没有编辑区域以外的地方可供点击来收起键盘,自己制作一个按钮来收起目前的虚拟键盘,也是一个不错的方法,由于按钮必须在虚拟键盘出现才能显示于画面上,因此必须借用 NSNotificationCenter 来帮助我们判断目前键盘的状态。
首先在 viewDidLoad: 事件中,向 NSNotificationCenter 进行註册,告诉 NSNotificationCenter 我们的 doneButtonshow: 方法函式。

- (void)viewDidLoad {
  [super viewDidLoad];
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (doneButtonshow:) name: UIKeyboardDidShowNotification object:nil];
}

现在每当虚拟键盘出现时,就会自动呼叫我们自定义的 doneButtonshow: 方法函式,接下来只要在该方法函式里定义按钮出现的方法即可。

-(void) doneButtonshow: (NSNotification *)notification {
  doneButton = [UIButton buttonWithType: UIButtonTypeRoundedRect];
  doneButton.frame = CGRectMake(0, 228, 70, 35);
  [doneButton setTitle:@"完成编辑" forState: UIControlStateNormal];
  [doneButton addTarget: self action:@selector(hideKeyboard) forControlEvents: UIControlEventTouchUpInside]; 

  [self.view addSubview:doneButton];
}

最后是实作按钮按下去时的 hideKeyboard: 方法函式,务必记得要在函式中移除该按钮。

-(void) hideKeyboard {
  [doneButton removeFromSuperview];
  [myTextView resignFirstResponder];
}

4. 使用判断输入字元

如果要使用输入特定字元(例如 return 换行字元)来收起键盘,必须先在类别内的 @interface 区段採用  协定,您可以参考 Protocol 协定的使用方式一文,获得更多关于协定的资讯。

在采用  协定之后,接着实作出协定内的 textView:shouldChangeTextInRange:replacementText:方法函式,此方法函式会在字元输入时触发,而回传的 BOOL 值则代表该字元是否要作用,下列程式码就是在此方法函式中,使用判断输入字元的方式来收起虚拟键盘(判断字元为 return 换行字元)。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
  if ([text isEqualToString:@"\n"]) {
    [myTextView resignFirstResponder];
    return NO;
  }
  return YES;
}

最后别忘记在 viewDidLoad: 事件中,将 UITextView 的代理物件指向自己,这样程式才能正确找到实作  协定方法函式的类别。

- (void)viewDidLoad {
  [super viewDidLoad];
  myTextView.delegate = self;
}

5. 关于键盘遮蔽的问题

如果您在实作上有遭遇到键盘遮蔽编辑区域的问题,可以参考使用 Animation 解决小键盘挡住 UITextField 的问题一文,透过 Core Graphic 的 Animation 功能,在键盘出现时同时移动编辑区域来解决遮蔽的问题。

以上就是对IOS关闭键盘 退出键盘 5种方式的资料整理,谢谢大家对本站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ios
, 关闭键盘
, 退出键盘
, 退出键盘的总结
IOS关闭键盘
ios开发 关闭键盘联想、ios开发 关闭键盘、安卓开发关闭软键盘、ios 退出键盘、如何退出软键盘,以便于您获取更多的相关知识。

时间: 2024-10-23 09:29:17

iOS 开发之 - 关闭键盘 退出键盘 的5种方式_IOS的相关文章

总结IOS关闭键盘/退出键盘的五种方式_IOS

话不多说,接下来就是几种实现方式: 1,点击编辑区以外的地方(UIView) 这是一种很直觉的方法,当不再需要使用虚拟键盘时,只要点击虚拟键盘和编辑区域外的地方,就可以将键盘收起,下面程式码是在 UIView 中内建的触碰事件方法函式,您可以参考 Touch Panel / 触碰萤幕 / 压力感应器的基本使用方式一文,找到更多关于触碰事件的方法函式. – (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { if (![

安卓UI设计与开发教程 顶部标题栏(五)两种方式实现仿微信标题栏弹窗效果

博主在这篇文章中将会继续围绕顶部标题栏专题来进行实例讲解,今天要讲解的主题是分别使用 PopupWindow和Activity两种不同的方式来实现仿微信顶部标题栏弹窗的这样一个效果. 一.实现效果 图 这里为了演示方便,我将两种方法放在一个应用程序中演示,这个是主界面 开发教程 顶部标题栏(五)两种方式实现仿微信标题栏弹窗效果-js修改微信顶部标题栏"> 虽 然两种实现的方式不一样,但是最终的效果图都是差不多的

方法-iOS自带高德地图定位是不是有两种方式

问题描述 iOS自带高德地图定位是不是有两种方式 1.iOS自带高德地图定位是不是有两种方式? a.CLLocationManager b.MKMapView的代理方法:两者的主要区别是,当有地图显示的时候,就不需要使用定位的方式获取经纬度:当没有地图显示的时候,就需要定位的方式获取经纬度:2.iOS使用百度地图定位只有一种? a.BMKMapView没有实现地图定位的方法? b.只能通过BMKLocationService来实现定位?3.两种地图定位的坐标是不是原始的经纬度(原始指的意思是:假

iOS开发中使用CoreLocation框架处理地理编码的方法_IOS

一.简介 1.在移动互联网时代,移动app能解决用户的很多生活琐事,比如 (1)导航:去任意陌生的地方 (2)周边:找餐馆.找酒店.找银行.找电影院 2.在上述应用中,都用到了地图和定位功能,在iOS开发中,要想加入这2大功能,必须基于2个框架进行开发 (1)Map Kit :用于地图展示 (2)Core Location :用于地理定位  3.两个热门专业术语 (1)LBS :Location Based Service(基于定位的服务) (2)SoLoMo :Social Local Mob

iOS开发网络篇—实现大文件的多线程断点下载_IOS

说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时开启多条线程下载一个较大的文件.因为实现过程较为复杂,所以下面贴出完整的代码. 实现思路:下载开始,创建一个和要下载的文件大小相同的文件(如果要下载的文件为100M,那么就在沙盒中创建一个100M的文件,然后计算每一段的下载量,开启多条线程下载各段的数据,分别写入对应的文件部分). 项目中用到的主要类如下: 完成的实现代码如下: 主控制器中的代码: #import "YYViewController.h" #import

详解iOS开发 - 用AFNetworking实现https单向验证,双向验证_IOS

自苹果宣布2017年1月1日开始强制使用https以来,htpps慢慢成为大家讨论的对象之一,不是说此前https没有出现,只是这一决策让得开发者始料未及,博主在15年的时候就做过https的接口,深知此坑之深,原因就是自身对这方面知识不了解加上网上的资料少,除此外还有博客不知对错就互相转载,导致当时网上几乎找不到能用的代码,这一点,博主说的毫不夸张. 鉴于此,博主一直想填一下这个坑,多增加一些正确的代码,来供广大开发者使用,后来一直被搁置,经过尝试后,博主现将整理好的代码发布在这里,希望能帮到

iOS开发中使用NSURLConnection类处理网络请求的方法_IOS

NSURLConnection 作为 Core Foundation / CFNetwork 框架的 API 之上的一个抽象,在 2003 年,随着第一版的 Safari 的发布就发布了.NSURLConnection 这个名字,实际上是指代的 Foundation 框架的 URL 加载系统中一系列有关联的组件:NSURLRequest.NSURLResponse.NSURLProtocol. NSURLCache. NSHTTPCookieStorage.NSURLCredentialStor

iOS开发--仿新闻首页效果WMPageController的使用详解_IOS

这一篇记录的是iOS开发中第三方库WMPageController控件的使用方法,主要是用来分页显示内容的,可以通过手势滑动来切换页面,也可以通过点击标题部分来切换页面,如下图所示: 使用方法: 新建工程DemoTest1,然后通过cocoapods引入WMPageController到项目中,Podfile文件的内容如下: platform :ios,'7.0' target 'DemoTest1' do pod 'WMPageController', '~> 1.6.4' end 方法一:

iOS开发中常用的各种动画、页面切面效果_IOS

今天主要用到的动画类是CALayer下的CATransition至于各种动画类中如何继承的在这也不做赘述,网上的资料是一抓一大把.好废话少说切入今天的正题. 一.封装动画方法 1.用CATransition实现动画的封装方法如下,每句代码是何意思,请看注释之. #pragma CATransition动画实现 - (void) transitionWithType:(NSString *) type WithSubtype:(NSString *) subtype ForView : (UIVi