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

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

 

一,textfield的return键改变

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

pastedGraphic.png

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),

};

*/

pastedGraphic.png

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

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

}

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

解决方案

pastedGraphic.png

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

}

pastedGraphic.png

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

 

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

pastedGraphic.png

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

posted @ 2019-03-19 14:34  sundaysios  阅读(836)  评论(0编辑  收藏  举报