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; //这里设置为无文字就灰色不可点

原文地址:https://www.cnblogs.com/sundaysgarden/p/10558507.html

时间: 2024-07-29 08:34:52

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

iOS开发中如何在键盘弹出时改变View的高度

在iOS开发的时候有两个经常要用到的控件UITextfield跟UITextView,我们输入内容基本是通过这两个控件进行的,但是有时候会遇到这样的问题:在点击输入之后弹出键盘遮盖住了输入框,可以通过以下办法解决: 添加通知监听键盘的弹出跟隐藏 //监听键盘弹出和隐藏 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillSho

iOS开发之点触textView编辑区关闭键盘

textView,textField 关闭键盘的方式网上有很多种, 最普遍的是使用键盘中回车键作为键盘关闭的信号,甚至有用户交互最差的监听键盘输入.再就是在键盘上添加关闭按钮,这个也不好,不够简约.还有在界面底部添加subView,subView中添加按钮,属于在界面上添加关闭按钮类型的,键盘弹出之后通过动画上移整个subView至键盘顶部的,这是我以前采用的一种方式.不过界面东西太多,感觉界面越简约越好. 还有一种比较接近本文的是通过点击编辑区以外的view关闭键盘,但是用户还需要自己区分哪里

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

前言:好久没写博客,今天来一波.我在实际项目开发中,会遇到这样功能需求:我已经搭好了iOS的UI界面,但是很多界面的子View用了UIView,然后这些UIView中用了UILabel和UIImageView,然后接着需求要这些View能够有点击事件,比如一点击就跳转到某个控制器.一开始懵逼了,难道我还要把他们全部改成UIButton,但是UIButton不好添加子View,难道我还要全部自定义一下UIButton,就算自定义好了,在项目已经打好的界面还是要一个个替换,多麻烦.所以就想到通过UI

IOS开发之控件frame/bounds/center尺寸改变小技巧-简单给UIView新增分类(github链接)

大家是否还记得对控件的frame/bounds/center进行属性更改时的三部曲? 1>将结构体取出 2>改变取出后的结构体对应的数据 3>将修改后的结构体赋值给控件 CGRect frame = self.view.frame; // your code... frame.origin.x = frameX; // your code... self.view.frame = frame; 这在实际工作中需要更改相应属性的时候是很不方便的,所以考虑到直接在UIView的分类中添加相应

iOS开发----Xcode7升级之后插件无法使用与不小心点击Skipbundle的解决办法

小伙伴们在升级了 Xcode7 之后有些插件不能使用了.现在提供如下解决办法: 1. 首先查看 Xcode 的 UUID,在终端执行 defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID 会得到一串 UUID 码 2. 找到 Xcode 插件所在的目录 ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins 选择已安装的插件如

iOS开发-UITableViewCell(UICollectionViewItem)需要两个手指点击或者长按才可以选中,解决办法

今天写代码遇到一个特别诡异的问题,就是在我的cell中需要两个手指点击才可以选中 先介绍下我的视图结构ViewController->UITableView->自定义Cell 产生这样的原因是,我在ViewController.view上加了一个手势,导致了Cell不能点按的结果,把那个手势移除掉就好了 同理CollectionView也不可以加 虽然解决了问题,但是我还有个疑问,ViewController.view加的手势,为什么tableViewCell跟着混乱,如果加在tableVie

iOS开发基础知识--碎片3

iOS开发基础知识--碎片3  iOS开发基础知识--碎片3 十二:判断设备 //设备名称 return [UIDevice currentDevice].name; //设备型号,只可得到是何设备,无法得到是第几代设备 return [UIDevice currentDevice].model; //系统版本型号,如iPhone OS return [UIDevice currentDevice].systemVersion; //系统版本名称,如6.1.3 return [UIDevice

【iOS开发-16】UITextField协议的用法,键盘的隐藏,以及视图随着键盘的出现隐藏而上下调整位置

(1)有很多对于文本框的编辑和结束编辑的设置需要用到文本框协议,即UITextFieldDelegate:先在AppDelegate.h中加入<UITextFieldDelegate>协议,然后就可以在ViewController.m中使用.比如我们本例中对t1这个文本框对象设置了代理,代理self,即本视图控制器类,所以在本类中使用的方法都会影响t1,即可以设置t1.(最后几句为猜测,后续继续学习看是否如此). (2)当然真正的几个函数其实没甚么意思,无非就是是否允许编辑和结束编辑,如果真的

ios开发中遇到的问题和解答汇总

如何让一个数组中的字典,如果字典中有重复的id.将重复的id的字典进行数组整合....<点击查看详情>iOS UIView 创建是不是都会经过initWithFrame?<点击查看详情>iPad 9.1系统上键盘响应很慢<点击查看详情>ios如何绑定数据?<点击查看详情>iOS开发,我想上传一个.gsd的文件(或者stl),请问该怎么做<点击查看详情>iOS NSTimer问题<点击查看详情>iOS大部分积分墙软件为啥都做基于Safa