IOS 开发之-- textfield和textview,return键的改变,点击return键

一,textfield的return键改变

方案1.改变键盘右下角的换行(enter)键为完成键,后实现代理方法键盘自动回弹

UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(100, 300, 200, 40)];

[self.view addSubview:textField];

textField.delegate = self;

textField.returnKeyType = UIReturnKeyDone;//改变为完成键,如果在项目中导入了YYText框架那么原生的就被替换掉了,变为returnKeyType = UIKeyboardTypeTwitter;

//实现UITextField代理方法

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

[textField resignFirstResponder];//取消第一响应者

return YES;

}

/*textField.returnKeyType可以改变为很多样式

typedef NS_ENUM(NSInteger, UIReturnKeyType) {

UIReturnKeyDefault,

UIReturnKeyGo,

UIReturnKeyGoogle,

UIReturnKeyJoin,

UIReturnKeyNext,

UIReturnKeyRoute,

UIReturnKeySearch,

UIReturnKeySend,

UIReturnKeyYahoo,

UIReturnKeyDone,

UIReturnKeyEmergencyCall,

UIReturnKeyContinue NS_ENUM_AVAILABLE_IOS(9_0),

};

*/

当然搜狗输入法是自带隐藏键盘的功能的,但是你不能保证每个用户都装有搜狗输入法,这种方案也会改变搜狗键盘的右下角按钮为完成键

方案2.点击textField以外区域键盘回弹

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

[self.view endEditing:YES];

}

如果textField在tableView上还可以实现下面的tableView的代理方法

-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

[self.view endEditing:YES];

}

问题二:键盘键盘遮挡输入框的的问题

解决方案

#pragma mark - textFieldDelegate(别忘了遵守协议设置代理)

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

self.view.y = self.view.y - 216;  //216是输入框在最底部时view移动的距离,具体移动多少距离,需要根据实际情况而定

}

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

self.view.y = self.view.y + 216;

}

其实这里也可以自己写个动画!只要实现这两个方法就可以了,一般的话,会在键盘弹出的时候,监听事件,然后进行操作的!

同样textview也可以实现点击return键让键盘隐藏的操作,代码如下:

UITextFieldDelegate代理里面响应return键的回调:textFieldShouldReturn:。

但是 UITextView的代理UITextViewDelegate 里面并没有这样的回调。

但是有别的方法可以实现:

UITextViewDelegate里面有这样一个代理函数:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

这个函数的最后一个参数text代表你每次输入的的那个字,所以:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{

if ([text isEqualToString:@"\n"]){ //判断输入的字是否是回车,即按下return

//在这里做你响应return键的代码

[self.textView resignFirstResponder];

return NO; //这里返回NO,就代表return键值失效,即页面上按下return,不会出现换行,如果为yes,则输入页面会换行

}

return YES;

}

今天在做搜索栏时候,发现系统软键盘有下角的“搜索”按钮在输入框无论有没有文字的情况下都是可以点击的状态,记得其他软件在无文字的状态下是不可点击的状态,起初还以为要对textfield的内容做一个判断,后来发现系统本身就自带判断,可以让按钮为灰色不可点击

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 100, 30)]

textField.returnKeyType = UIReturnKeySearch; //设置按键类型

textField.enablesReturnKeyAutomatically = YES; //这里设置为无文字就灰色不可点

IOS 开发之-- textfield和textview,return键的改变,点击return键的更多相关文章

  1. IOS开发之功能模块--给任意的UIView添加点击事件

    前言:好久没写博客,今天来一波.我在实际项目开发中,会遇到这样功能需求:我已经搭好了iOS的UI界面,但是很多界面的子View用了UIView,然后这些UIView中用了UILabel和UIImage ...

  2. iOS开发学习-类似微信聊天消息中的电话号码点击保存到通讯录中的功能

    类似微信聊天消息中的电话号码点击保存到通讯录中的功能,ABAddress的实现在iOS9中是不能正常使用的,点击完成后,手机会非常的卡,iOS9之后需要使用Contact新提供的方法来实现该功能.快捷 ...

  3. iOS 开发总结(上)

    来源:蝴蝶之梦天使 链接:http://www.jianshu.com/p/d333cf6ae4b0 在iOS开发中经常需要使用的或不常用的知识点的总结,几年的收藏和积累(踩过的坑). 一. iPho ...

  4. iOS开发 之 不要告诉我你真的懂isEqual与hash!

    目录 为什么要有isEqual方法? 如何重写自己的isEqual方法? 为什么要有hash方法? hash方法什么时候被调用? hash方法与判等的关系? 如何重写自己的hash方法? 为什么要有i ...

  5. 【Swift】图文混排,ios开发中在textfield或textView中插入图片

    在ios开发中,我们一般都是在textfield或者textView中输入文字.当我们需要插入图片的时候其实也是很简单的 我们需要利用的textfield,textView的属性化文本,将图片以附件的 ...

  6. ios开发中关闭textview控件的虚拟键盘

    在ios开发中,textfield控件在点击的时候出现虚拟键盘,关掉虚拟键盘可以通过虚拟键盘中的done button和点击view中的任意地方来关闭虚拟键盘. 1.第一种方法是textfield控件 ...

  7. IOS开发 - TextField 控件详细

    //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, ...

  8. 通知模式实现两个textField传值及模态视图——iOS开发

    通知模式实现两个textField传值及模态视图--iOS开发 利用通知模式,实现两个不同界面的textField之间的传值,在界面二输入字符,传值到前一界面的textField. 界面的切换,这里临 ...

  9. IOS开发---菜鸟学习之路--(二十三)-直接利用键值对的方式来处理数据的感想

    首先声明,本文纯粹只是做为本人个人新手的理解.文中的想法我知道肯定有很多地方是错的. 但是这就是我作为一个新人的使用方法,对于大牛非常欢迎指导,对于喷子请绕道而行. 由于这是早上跟我学长讨论数据处理时 ...

随机推荐

  1. Node 各个版本支持ES2015特性的网站

    如果想了解Node 各个版本支持ES2015到那个程度,可以看下面网站. https://node.green/

  2. 什么是JDK?什么是JRE?JDK与JRE的区别和用途

    一.编程环境与运行环境 JDK(Java Development Kit)称为Java开发包或Java开发工具.是一个编写Java的Applet小程序和应用程序的程序开发环境.JDK是整个Java的核 ...

  3. 简述KVM架构和Xen架构

    暑假最后一篇更新,因为,,,明天我就回学校了. 以下均为个人理解,如果有不对的地方还望各位dalao不吝赐教. 虚拟化 虚拟化是通过Hypervisor程序实现的,Hypervisor的作用是将硬件虚 ...

  4. Python的datetime模块分析

    datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1. datetime模块定义了5个类,分别是 1.datetime ...

  5. MySQL高级知识(十四)——行锁

    前言:前面学习了表锁的相关知识,本篇主要介绍行锁的相关知识.行锁偏向InnoDB存储引擎,开销大,加锁慢,会出现死锁,锁定粒度小,发生锁冲突的概率低,但并发度高. 0.准备 #1.创建相关测试表tb_ ...

  6. [matlab] 22.matlab图论实例 最短路问题与最小生成树 (转载)

    最短路问题之 Floyd 某公司在六个城市 c1c1,c2c2,….,c6c6 中有分公司,从 cici 到 cjcj 的直接航程票价记在下述矩阵的 (ii,jj) 位置上. (∞∞表示无直接航路), ...

  7. [matlab] 8.蚁群算法解决TSP问题

    城市坐标数据下载  密码:07d5 求遍历这52座城市后最后回到最初城市的最短距离 %% 第9章 蚁群算法及MATLAB实现——TSP问题 % 程序9-1 %% 数据准备 % 清空环境变量 clear ...

  8. BZOJ5197:[CERC2017]Gambling Guide(最短路,期望DP)

    Description 给定一张n个点,m条双向边的无向图. 你要从1号点走到n号点.当你位于x点时,你需要花1元钱,等概率随机地买到与x相邻的一个点的票,只有通过票才能走到其它点. 每当完成一次交易 ...

  9. Thymeleaf3语法详解

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code   Thymeleaf是Spring boot推荐使用的模版引擎,除此之外常见的还有F ...

  10. springboot--bean交给容器

    1.把bean交给springboot管理 springboot也是一个spring容器.把一个bean交给springboot的容器有三种方法,前两种是先把bean交给spring容器再把sprin ...