IOS 开发之-- textfield和textview,return键的改变,点击return键
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键的更多相关文章
- IOS开发之功能模块--给任意的UIView添加点击事件
前言:好久没写博客,今天来一波.我在实际项目开发中,会遇到这样功能需求:我已经搭好了iOS的UI界面,但是很多界面的子View用了UIView,然后这些UIView中用了UILabel和UIImage ...
- iOS开发学习-类似微信聊天消息中的电话号码点击保存到通讯录中的功能
类似微信聊天消息中的电话号码点击保存到通讯录中的功能,ABAddress的实现在iOS9中是不能正常使用的,点击完成后,手机会非常的卡,iOS9之后需要使用Contact新提供的方法来实现该功能.快捷 ...
- iOS 开发总结(上)
来源:蝴蝶之梦天使 链接:http://www.jianshu.com/p/d333cf6ae4b0 在iOS开发中经常需要使用的或不常用的知识点的总结,几年的收藏和积累(踩过的坑). 一. iPho ...
- iOS开发 之 不要告诉我你真的懂isEqual与hash!
目录 为什么要有isEqual方法? 如何重写自己的isEqual方法? 为什么要有hash方法? hash方法什么时候被调用? hash方法与判等的关系? 如何重写自己的hash方法? 为什么要有i ...
- 【Swift】图文混排,ios开发中在textfield或textView中插入图片
在ios开发中,我们一般都是在textfield或者textView中输入文字.当我们需要插入图片的时候其实也是很简单的 我们需要利用的textfield,textView的属性化文本,将图片以附件的 ...
- ios开发中关闭textview控件的虚拟键盘
在ios开发中,textfield控件在点击的时候出现虚拟键盘,关掉虚拟键盘可以通过虚拟键盘中的done button和点击view中的任意地方来关闭虚拟键盘. 1.第一种方法是textfield控件 ...
- IOS开发 - TextField 控件详细
//初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, ...
- 通知模式实现两个textField传值及模态视图——iOS开发
通知模式实现两个textField传值及模态视图--iOS开发 利用通知模式,实现两个不同界面的textField之间的传值,在界面二输入字符,传值到前一界面的textField. 界面的切换,这里临 ...
- IOS开发---菜鸟学习之路--(二十三)-直接利用键值对的方式来处理数据的感想
首先声明,本文纯粹只是做为本人个人新手的理解.文中的想法我知道肯定有很多地方是错的. 但是这就是我作为一个新人的使用方法,对于大牛非常欢迎指导,对于喷子请绕道而行. 由于这是早上跟我学长讨论数据处理时 ...
随机推荐
- Windows安装paramiko和PyCharm工程导入
借鉴了CSDN博主Liam_Fang的paramiko安装 原文链接:https://blog.csdn.net/weixin_39912556/article/details/80543829 前提 ...
- IEEE754浮点数的表示方法
https://blog.csdn.net/K346K346/article/details/50487127
- Ubuntu16.04下iTop4412环境搭建+Android4.0.3编译
系统:Ubuntu16.04.02(优麒麟) 安装库文件和JDK 使用cd 命令,进入解压出来的“Android_JDK” -->“jdk6”文件夹,运行脚本文件 “install-sun-ja ...
- June 7. 2018 Week 23rd Thursday
Half is worse than none at all. 一知半解比一无所知更痛苦. From Westworld. If we go looking for the truth, get th ...
- Teradata超长数据会截断
1.数据库版本 Teradata 15.10 2.测试案例: create multiset table test_stg ( col1 ) CHARACTER SET LATIN not null ...
- 为什么一定要学习linux系统?
为什么一定要学习linux系统? linux诞生了这么多年,以前还喊着如何能取代windows系统,现在这个口号已经小多了,任何事物发展都有其局限性都有其天花板.就如同在国内再搞一个社交软件取代腾讯一 ...
- echarts 中国地图实现 省、市、区县三级联动,省级下钻、市级下钻
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 效果如下图: 每天学习一点点 编程PDF电子书.视频教程免费下载:http://www ...
- P1515 旅行(简单搜索)
非常简单的搜索. 思路:先排序,然后,搜索枚举的时候满足A < 两个旅店 < B,然后,搜索就行了. #include<iostream> #include<algori ...
- 8.oop-多态
一.继承1.定义:子类继承父类,会继承父类的属性和方法2.语法:extends关键字 子类 extends 父类3.特点:java中的继承是单一继承,子类只能继承一个父类,但是父类可以有多个子类4.用 ...
- Fastcgi工作原理
FastCGI是一个可伸缩的,高速地在HTTP server和动态脚本语言间的接口 FastCGI优点 这种方式可以让HTTP服务器专一的处理静态请求或者将动态脚本服务器返回给客户端,很大程度上提高了 ...