uitextfield 键盘类型_UITextField 键盘弹出问题
有朋友问了一些关于iPhone键盘的问题, 那么总结一下, 在 iOS 程序中当想要在文本框中输入数据,点击文本框会打开键盘。对于 iPad 程序,其键盘有一个按钮可以用来关闭键盘,但是 iPhone 程序中的键盘却没有这样的按钮,不过我们可以采取一些方法关闭它。例如,我们可以实现按下 Return [Keyboard Type为defult] (有时也是 Done、Research 等)关闭键盘,或更人性化的,轻触背景关闭键盘。
1、首先讲一下按下Return键关闭键盘。
当按下键盘的 Return 键,会产生一个 Did End On Exit 事件,此时我们告诉文本框要放弃控件,于是键盘就消失了。在这个基础上,实现轻触 Return 关闭键盘,步骤为:
(1)在 ViewController.h 中声明一个方法:
- (IBAction)textFiledReturnEditing:(id)sender;
(2)在 ViewController.m 中实现这个方法:
- (IBAction)textFiledReturnEditing:(id)sender
{
[sender resignFirstResponder];
}
Snip20160511_2.png
Snip20160511_1.png
所谓 First Responder 译为第一响应者,指的就是用户当前正在与之交互的控件,。当用户使用键盘时,First Responder 就是这个键盘,resignFirstResponder 方法,顾名思义,就是放弃 First Responder 。
2、下面介绍更人性化的方法,轻触背景关闭键盘。
跟上面的步骤差不多,首先定义一个方法,然后实现这个方法,接下来将指定的控件映射到这个方法,并选择好所触发的事件。不同的是,这次我们要选择的控件不是上边的文本框,而是视图 View 本身。
(1)在 ViewController.h 文件中添加方法声明代码:
- (IBAction)backgroundTap:(id)sender;
(2)在ViewController.m中实现这个方法:
- (IBAction)backgroundTap:(id)sender
{
[self.textField resignFirstResponder];
}
需要说明的是,[self.textField resignFirstResponder]表示,如果textField有FirstResponder的话就放弃它,我们不用先判断firstField是否有,这条语句完全正确。
(3)让 View 映射到这个方法,不过事先,我们先要改变 View 的类型。
打开xib,选中 View ,打开 Identity Inspector ,在 class 中选择 UIControl :
Snip20160511_3.png
(4)在 Connector Inspector 中找到 Touch Down ,从它右边的圆圈中拉出映射线,映射到 ViewController.h 的 backgroundTap 方法,如下图:
Snip20160511_4.png
如此, 打开键盘之后,在空白区域点击一下,键盘就会向下收起来。
在论坛上也有只写一个backgroundTap 函数,然后将组件的事件和屏幕的事件指向同一个函数。其实这两个方法都是可以用的,但是呢,我更加倾向于使用同一个函数的方法,原因就要牵扯到第二个方面的知识:
解决虚拟键盘挡住UITextField的方法因为屏幕太小的缘故,一个键盘跳出来总是把输入框挡住,所以需要移动屏幕来匹配键盘.
3 解决虚拟键盘挡住UITextField的方法
- (void)keyboardWillShow:(NSNotification *)noti
{
//键盘输入的界面调整
//键盘的高度
float height = 216.0;
CGRect frame = self.view.frame;
frame.size = CGSizeMake(frame.size.width,frame.size.height - height);
[UIView beginAnimations:@"Curl"context:nil];
//动画开始
[UIView setAnimationDuration:0.30];
[UIView setAnimationDelegate:self];
[self.view setFrame:frame];
[UIView commitAnimations];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
NSTimeInterval animationDuration = 0.30f;
[UIView beginAnimations:@"ResizeForKeyboard" context:nil];
[UIView setAnimationDuration:animationDuration];
CGRect rect = CGRectMake(0.0f, 0.0f, self.view.frame.size.width,self.view.frame.size.height);
//CGRect rect = CGRectMake(0.0f, 20.0f, self.view.frame.size.width, self.view.frame.size.height);
self.view.frame = rect;
[UIView commitAnimations];
[textField resignFirstResponder];
return YES;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
CGRect frame = textField.frame;
//键盘高度216
int offset = frame.origin.y + 32 - (self.view.frame.size.height - 216.0);
NSTimeInterval animationDuration = 0.30f;
[UIView beginAnimations:@"ResizeForKeyBoard" context:nil];
[UIView setAnimationDuration:animationDuration];
float width = self.view.frame.size.width;
float height = self.view.frame.size.height;
if (offset > 0) {
CGRect rect = CGRectMake(0.0f, -offset,width,height);
self.view.frame = rect;
}
[UIView commitAnimations];
}
只要在代码中加入这三个文件,然后设置自身delegate就可以实现屏幕的移动,但是这里经常会有屏幕移动后不能返回的问题,这里的解决方案就是
- (IBAction)backgroundTap:(id)sender
{
NSTimeInterval animationDuration = 0.30f;
[UIView beginAnimations:@"ResizeForKeyboard" context:nil];
[UIView setAnimationDuration:animationDuration];
CGRect rect = CGRectMake(0.0f, 0.0f, self.view.frame.size.width,self.view.frame.size.height);
self.view.frame = rect;
}
在backgroundTap函数中添加这些代码,这样屏幕就会返回正常了。
uitextfield 键盘类型_UITextField 键盘弹出问题相关推荐
- java 弹出软键盘_Android开发之弹出软键盘工具类简单示例
本文实例讲述了Android开发之弹出软键盘工具类.分享给大家供大家参考,具体如下: package com.maobang.imsdk.util; import android.content.Co ...
- android 键盘遮盖输入框_android弹出输入框,软键盘挡住部分编辑框
公司要做一款类似微信的即时通讯app 现有如下需求: 当edittext获取到焦点,弹出输入框,并且将listview(recyclerview)顶上去 类似微信QQ的效果,如下图所示 editTex ...
- vant 软键盘_移动端软键盘监听(弹出,收起),及影响定位布局的问题
移动端软键盘监听(弹出,收起),及影响定位布局的问题 一:移动端软键盘监听(弹出,收起) 1.监听resize ( Android) var winHeight = $(window).height( ...
- 键盘按8怎么弹出计算机,win8系统键盘太过灵敏打一个字母键出来多个字母怎么办...
最近有win8系统用户反映说他使用的键盘太过灵敏了,轻轻敲打键盘的一个字母键,却总是弹出一长串多个字母,经常会打错字,想必有很多用户遇到过这样的问题吧,要如何处理呢,现在小编就给大家介绍一下win8系 ...
- ABAP程序中调用不同类型的函数弹出不同的消息对话框
一组有用的用户交互窗口函数 显示多条消息 SAP系统用的是这个函数:C14Z_MESSAGES_SHOW_AS_POPUP POPUP_TO_CONFIRM_LOSS_OF_DATA 显示有YES/N ...
- 设置Android软键盘的默认不弹出
2019独角兽企业重金招聘Python工程师标准>>> 方法一:在OnCreate()函数中,加上下面的代码 getWindow().setSoftInputMode( Window ...
- swift:iOS模拟器键盘设置(弹出,中文键盘,隐藏)
1 当点击UItextField输入框时,没有弹出虚拟键盘 解决方案:取消勾选Hardware>Keyboard>Connection HardWare Keyboard选项 2 想要模拟 ...
- android 弹出键盘 底部控件上移,如何设置底部控件view随着软键盘的弹出而上移...
1. 概述 在开发中,我们可能会遇到一个常见的效果,就是点击EditText输入框,软键盘随着EditText输入框同时上移,实现方式如下: 给EditText 外层添加一个 ScrollView,然 ...
- android 弹出对话框时显示键盘
今天,简单讲讲如何在弹出自定义的对话框时,弹出软键盘. 之前,我讲了如何制作自定义的对话框,现在,如果在弹出对话框时,自动弹出软键盘,将光标直接聚焦到自定义对话框的输入框内,那该怎么做呢? 在网上搜索 ...
最新文章
- android 根据时间获取时间对应的星期
- 面试:你了解中兴吗_HTTP简介:您需要了解的所有内容
- 古塔问题matlab,基于 Matlab 对古塔变形趋势探究的数学模型
- Linux笔记 1-8 --文件传输
- 桌面鼠标手写输入法_「桌面分享」工作娱乐两不误,花费7万打造的桌面都有些啥?...
- 黑客必须掌握的基本技能
- 收藏 | 机器学习、深度学习调参手册
- 重要性采样(Importance Sampling)简介和简单样例实现
- 95-090-022-源码-bin脚本-CLI提交Job的时候加载插件
- element ui 图片控件 排序_vuedraggable+element ui实现页面控件拖拽排序效果
- 2021-2025年中国电弧火花发射光谱仪行业市场供需与战略研究报告
- 【报错】Error inserting GREEM=30 YELLOW=4 RED=5 android.database.sqlite.SQLiteException: no such tab
- 得寸进尺的摩根大通 步步为营
- 基于javaweb的学生考勤管理系统(java+SSM+Poi导出+Easyui+JFreeChart+maven+mysql)
- SAP HANA XS 专栏
- NLP、CV、语音相关AI算法工程师面试问题、代码、简历模板、知识点等资源整理分享
- 2022年金三银四该如何规划,才能轻松拿到offer
- 淘宝客评论粉引流玩法介绍(二)
- 机房布线系统施工要点解析
- Flutter 加载WebView(加载网页)
热门文章
- PIC单片机精通_串口通信模块C实现
- MySQL数据库中导入导出方法以及工具介绍
- sql语句查询过慢的原因分析
- Delphi的单元文件详解
- java-web hibernate中的懒加载问题
- head.s 分析——Linux-0.11 学习笔记(三)
- ModbusPoll及ModbusSlave安装及使用指南
- Shrio Unable to execute ‘doFinal‘ with cipher instance
- 数据结构与算法 -- 栈 ADT
- ANDROID: 超级好用的ADB FORWARD命令