记录于2013/6/26:

一.点击键盘上的“Done”按钮关闭键盘

1.视图控制器实现UITextFieldDelegate协议

2.设置文本框属性

textField.returnKeyType = UIReturnKeyDone;

textField.delegate=self;

3. 重写协议方法

- (BOOL)textFieldShouldReturn:(UITextField *)textField

{

[textFieldresignFirstResponder];

// the user pressed the "Done" button, so dismiss the keyboard

returnYES;

}

二.点击键盘上的“Next”按钮实现文本框焦点跳转

1.视图控制器实现UITextFieldDelegate协议

2.设置文本框属性

tx_username.returnKeyType = UIReturnKeyNext;

tx_username.delegate =self;

3.重写协议方法

- (BOOL)textFieldShouldReturn:(UITextField *)textField

{

if([tx_username isFirstResponder]) {

[tx_email becomeFirstResponder];

}elseif([tx_email isFirstResponder]) {

[tx_password becomeFirstResponder];

} elseif([tx_password isFirstResponder]) {

[tx_conPassword becomeFirstResponder];

} elseif([tx_conPassword isFirstResponder]) {

[self performSelector:@selector(userRegister)];//tx_conPassword指定了UIReturnKeyJoin类型后调用的方法

}

returnYES;

}

UIScrollView页面下点击TextField键盘事件:

不能改变scrollView的frame,得改变contentOffSet调整。

(1)

#pragma mark

#pragma mark - Textfield delegate

//增加手势  点击输入框以外区域降下键盘

-(void)RegisterViewAddGest:(UIImageView *)view {

view.userInteractionEnabled = YES;

//单击事件

UITapGestureRecognizer *taprecognizer;

taprecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(RegisterKeyDown:)];

taprecognizer.numberOfTapsRequired = 1;

[view addGestureRecognizer:taprecognizer];

[taprecognizer release];

}

//键盘下降的时候

-(void)RegisterKeyDown:(UITapGestureRecognizer *)taprecognizer{

DebugLog(@"点击背景键盘下降");

if (taprecognizer.numberOfTapsRequired == 1) {

[self.nameTextField resignFirstResponder];

[self.phoneTextField resignFirstResponder];

[self.addressTextField resignFirstResponder];

[self.goodsTextField resignFirstResponder];

[self.numberTextField resignFirstResponder];

[self.timeTextField resignFirstResponder];

[self.attendTextField resignFirstResponder];

NSTimeInterval animationDuration = 0.30f;

[UIView beginAnimations:@"ResizeForKeyboard"context:nil];

[UIView setAnimationDuration:animationDuration];

if (self.buyNowScrollView.contentOffset.y >= self.buyNowScrollView.contentSize.height - self.buyNowScrollView.frame.size.height) {

self.buyNowScrollView.contentOffset = CGPointMake(0, self.buyNowScrollView.contentSize.height - self.buyNowScrollView.frame.size.height);

}

[UIViewcommitAnimations];

}

}

//输入框return的时候

-(BOOL)textFieldShouldReturn:(UITextField *)textField

{

if ([textField isEqual:self.nameTextField]) {

[self.phoneTextFieldbecomeFirstResponder];

}elseif ([textField isEqual:self.phoneTextField]) {

[self.addressTextFieldbecomeFirstResponder];

}elseif ([textField isEqual:self.addressTextField]) {

[self.goodsTextFieldbecomeFirstResponder];

}elseif ([textField isEqual:self.goodsTextField]) {

[self.numberTextFieldbecomeFirstResponder];

}elseif ([textField isEqual:self.numberTextField]) {

[self.timeTextFieldbecomeFirstResponder];

}elseif ([textField isEqual:self.timeTextField]) {

[self.attendTextFieldbecomeFirstResponder];

}else {

DebugLog(@"输入框return的时候");

[textField resignFirstResponder];

NSTimeInterval animationDuration = 0.30f;

[UIViewbeginAnimations:@"ResizeForKeyboard"context:nil];

[UIViewsetAnimationDuration:animationDuration];

self.buyNowScrollView.contentOffset = CGPointMake(0, self.buyNowScrollView.contentSize.height - self.buyNowScrollView.frame.size.height);

[UIViewcommitAnimations];

}

returnYES;

}

//输入框弹出的时候

- (void)textFieldDidBeginEditing:(UITextField *)textField

{

DebugLog(@"键盘弹出");

CGRect frame = textField.frame;

int offset = frame.origin.y + 70 - (self.view.frame.size.height - 216.0);//键盘高度216

NSTimeInterval animationDuration = 0.30f;

[UIView beginAnimations:@"ResizeForKeyBoard"context:nil];

[UIView setAnimationDuration:animationDuration];

if(offset > 0)

{

self.buyNowScrollView.contentOffset = CGPointMake(0, offset + 10);

}else{

self.buyNowScrollView.contentOffset = CGPointMake(0, 0);

}

[UIView commitAnimations];

}

(2)改写(1)的,更加稳定适用了   暂时还是很完美的

里面的都是textField嵌入在scroll里面的使用

#pragma mark - UITextFieldDelegate

- (BOOL)textFieldShouldReturn:(UITextField *)textField{

//401为普通会员账号 402为普通会员密码 403为普通会员密码确认 404为普通会员昵称

//411为发型师会员账号 412为发型师会员密码 413为发型师会员密码确认 414为发型师会员姓名 415为发型师会员手机

//键盘高度216

if(textField.tag <= 404){

if ([textField isEqual:self.commonUserText]) {

[self.commonPassTextbecomeFirstResponder];

}elseif ([textField isEqual:self.commonPassText]){

[self.commonRepeatPassTextbecomeFirstResponder];

}elseif ([textField isEqual:self.commonRepeatPassText]){

[self.commonNickTextbecomeFirstResponder];

}else{

for (UIView *subView inself.commonScrollView.subviews) {

if ([subView isKindOfClass:[UITextFieldclass]]) {

[subView resignFirstResponder];

}

}

if (self.commonScrollView.contentSize.height - self.commonScrollView.contentOffset.y < self.commonScrollView.frame.size.height) {

[self.commonScrollViewsetContentOffset:CGPointMake(0, self.commonScrollView.contentSize.height - self.commonScrollView.frame.size.height) animated:YES];

}

}

}else{

if ([textField isEqual:self.barberUserText]) {

[self.barberPassTextbecomeFirstResponder];

}elseif ([textField isEqual:self.barberPassText]){

[self.barberRepeatPassTextbecomeFirstResponder];

}elseif ([textField isEqual:self.barberRepeatPassText]){

[self.barberNickTextbecomeFirstResponder];

}elseif ([textField isEqual:self.barberNickText]){

[self.barberTelphoneTextbecomeFirstResponder];

}else{

for (UIView *subView inself.barberScrollView.subviews) {

if ([subView isKindOfClass:[UITextFieldclass]]) {

[subView resignFirstResponder];

}

}

//scroll的内容高度 - scroll的contentOffSet高度 < scroll的frane高度

if (self.barberScrollView.contentSize.height - self.barberScrollView.contentOffset.y < self.barberScrollView.frame.size.height) {

[self.barberScrollViewsetContentOffset:CGPointMake(0, self.barberScrollView.contentSize.height - self.barberScrollView.frame.size.height) animated:YES];

}

}

}

returnYES;

}

- (void)textFieldDidBeginEditing:(UITextField *)textField{

//401为普通会员账号 402为普通会员密码 403为普通会员密码确认 404为普通会员昵称

//411为发型师会员账号 412为发型师会员密码 413为发型师会员密码确认 414为发型师会员姓名 415为发型师会员手机

//键盘高度216

CGRect frame = textField.frame;

int offset;

if(textField.tag <= 404){

//scroll的y坐标 + textField在Scroll上的y坐标 + textField高度 - 除键盘高度外屏幕高度

offset = frame.origin.y + 110 + 30 + 6 - (SCREEN_HEIGHT - 252);

NSTimeInterval animationDuration = 0.30f;

[UIViewbeginAnimations:@"ResizeForKeyBoard"context:nil];

[UIViewsetAnimationDuration:animationDuration];

if(offset > 0)

{

[self.commonScrollViewsetContentOffset:CGPointMake(0, offset) animated:YES];

}else{

[self.commonScrollViewsetContentOffset:CGPointMake(0, 0) animated:YES];

}

[UIViewcommitAnimations];

}else {

NSLog(@"%f",SCREEN_HEIGHT);

offset = frame.origin.y + 146 - (SCREEN_HEIGHT - 252);

if(offset > 0)

{

[self.barberScrollViewsetContentOffset:CGPointMake(0, frame.origin.y + 146 - (SCREEN_HEIGHT - 252)) animated:YES];

}else{

[self.barberScrollViewsetContentOffset:CGPointMake(0, 0) animated:YES];

}

}

}

- (void)textFieldDidEndEditing:(UITextField *)textField{

//scroll的内容高度 - scroll的contentOffSet高度 < scroll的frane高度

if (self.commonScrollView.contentSize.height - self.commonScrollView.contentOffset.y < self.commonScrollView.frame.size.height) {

[self.commonScrollViewsetContentOffset:CGPointMake(0, self.commonScrollView.contentSize.height - self.commonScrollView.frame.size.height) animated:YES];

}

if (self.barberScrollView.contentSize.height - self.barberScrollView.contentOffset.y < self.barberScrollView.frame.size.height) {

[self.barberScrollViewsetContentOffset:CGPointMake(0, self.barberScrollView.contentSize.height - self.barberScrollView.frame.size.height) animated:YES];

}

}

UIView下的界面移动避免键盘遮盖方法:

- (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

{

// When the user presses return, take focus away from the text field so that the keyboard is dismissed.

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;

[UIView commitAnimations];

[textField resignFirstResponder];

return YES;

}

- (void)textFieldDidBeginEditing:(UITextField *)textField

{

CGRect frame = textField.frame;

int offset = frame.origin.y + 70 - (self.view.frame.size.height - 216.0); //键盘高度216 ,向上提多少在这里改

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];

}

ios键盘done中文_iOS键盘事件实现、控制相关推荐

  1. 『IOS』iPhone和ipad键盘高度及键盘响应事件

    原文地址:http://blog.csdn.net/benbenxiongyuan/article/details/7892019 IPAD键盘高度: portrait  264 landscape ...

  2. iOS开发中键盘样式和自定义键盘。

    文章目录 系统自带的样式 自定义键盘 在系统自带键盘基础上自定义键盘 完全自定义键盘 自定义全部类型键盘 系统自带的样式 在iOS开发中系统自带键盘已经有很多样式,但是有时候并不能满足我们都开发需求, ...

  3. html focus 唤醒手机键盘,移动端 input 元素 focus 的时候调出键盘(自动触发 focus 事件的同时调出键盘)?...

    UYOU 安卓我目前没有遇到问题.然后直接使用input.focus()是无法在ios中调起键盘的,因为ios中input元素的focus必须由事件触发.此外,如果模拟了触摸事件,但是在setTime ...

  4. JS-鼠标-键盘-文档-表单事件

    JS-鼠标-键盘-文档-表单事件 1 回顾 1.1 节点创建.添加.删除.替换.克隆 创建元素: document.createElement('标签名')添加子节点: 父元素.appendChild ...

  5. 安卓蓝牙键盘切换输入法_Windows10添加中文美式键盘,传统语言栏,采用ctrl+shift切换输入法...

    Windows10添加中文美式键盘,采用ctrl+shift切换输入法 用XP和Windows 7习惯后 用Windows 10 发现切换输入法快捷键变了,变成Windows键+空格,现在觉得不适应, ...

  6. win10添加美式键盘_Windows10添加中文美式键盘,传统语言栏,采用ctrl+shift切换输入法...

    Windows10添加中文美式键盘,采用ctrl+shift切换输入法 用XP和Windows 7习惯后 用Windows 10 发现切换输入法快捷键变了,变成Windows键+空格,现在觉得不适应, ...

  7. input禁止键盘及中文输入

    <input>禁止键盘及中文输入,但又不能用readonly 而且还需兼容ie 和 ff , 为了完成这功能费了蛮大功夫,呵呵,在此记录以便日后之用: Html代码   <!DOCT ...

  8. vue中input禁止输入中文_input禁止键盘及中文输入,但可以点击

    网上找了很多,不实用,要不兼容问题,这个可以! 禁止键盘及中文输入,但又不能用readonly 而且还需兼容ie 和 ff , 为了完成这功能费了蛮大功夫,呵呵,在此记录以便日后之用:另外禁止粘贴 ο ...

  9. Vue textarea 和input 开发ios点击空白地方键盘不收起问题

    vue h5 ios点击屏幕不收起键盘 --链接 Vue textarea 和input 开发ios点击空白地方键盘不收起问题 1.创建一个index.js文件 //index.js//解决ios点击 ...

  10. ios键盘通知和自定义键盘

    一.键盘通知 当文本View(如UITextField,UITextView, UIWebView内的输入框)进入编辑模式成为first responder时,系统会自动显示键盘.成为firstres ...

最新文章

  1. vacode允许c_Visual Studio Code 配置C/C++环境
  2. jvm_虚拟机参数讲解(二)
  3. test1 3-15 模拟赛1
  4. java dao层的泛型get方法_dao层的泛型实现(2种方法)
  5. uva146-ID码
  6. ROS入门(八) make_plan的Server连接
  7. 泛泰A870S官方4.4.2系统S0218210 内核版本号信息
  8. 第三次小组实践作业小组每日进度汇报:2017-12-2
  9. Android版本下载以及切换
  10. Win11 22527.201更新补丁包下载
  11. 程序员 文本编辑器 c语言,程序员必备的五款文本编辑器
  12. 阿里巴巴宣布5.4亿战略投资中国万网==互联网电子商务绑定互联网基础服务为手机电子商务开拓铺路
  13. 螃蟹WiFi驱动中的Band Steering功能
  14. 2022年“研究生科研素养提升”系列公益讲座在线测评试题及解析
  15. dp交换机命令_DP 交换机
  16. 【AP5904】三功能 2.5-5V 1.8A LED车灯 手电筒驱动芯片
  17. 流媒体传输 - HLS 协议
  18. 太秀了!那个在 GitHub 用文言文编程的小哥,竟从 28 万行唐诗中找出了对称矩阵...
  19. Voyager下的Dashboard Widgets
  20. 买什么房最合算(兼谈小产权房热销根源)

热门文章

  1. 寒门再难出贵子(好好看一下,有很大收货的)
  2. Jupyter Notebook 快捷键、安装主题、修改颜色、设置字体、注释斜体修改
  3. 人民币持续升值,百姓感受渐深
  4. 主成分回归之后预测_回归分析之主成分回归
  5. Redis学习资料汇总
  6. “分集”与“复用”辨析
  7. 《多媒体在初中数学中的运用研究》课题研究方案
  8. secureCRT注册码
  9. 计算机网络 第五章 课后题答案
  10. 攻防世界 ics-05