您的位置:首页 > 产品设计 > UI/UE

动态监听UITextField键盘的弹出与退出

2016-09-03 14:39 309 查看
  UITextField中键盘的弹出与隐藏状态通过系统的通知名称UIKeyboardWillShowNotification、UIKeyboardWillHideNotification来获取

UITextField中键盘的退出方法常用的有两种:1.点击空白处回撤键盘,2.点击Return建回撤键盘。

下面附上键盘的监听方法和键盘退出方法。

1.首先设置宏定义取屏幕宽高

#define WIDTH [[UIScreen mainScreen] bounds].size.width

#define HEIGHT [[UIScreen mainScreen] bounds].size.height
2.让控制器遵循协议

@interfaceViewController ()<UITextFieldDelegate>
3.设置属性值

@property (nonatomic,strong)UITextField
* textField;

//记录下textField的原始中心点

@property (nonatomic)CGPoint center;
4.附上UITextField的创建与监听键盘的方法

 //创建对象

   self.textField = [[UITextField alloc]initWithFrame:CGRectMake(50,HEIGHT
- 100,WIDTH -100 ,50)];

    //设置代理

    self.textField.delegate =self;

    //占位提醒字符

    self.textField.placeholder
=@"请输入内容";

    //边缘风格

    self.textField.borderStyle
= UITextBorderStyleRoundedRect;

    //键盘类型

    self.textField.keyboardType
= UIKeyboardTypeDefault;

    //设置字体

    self.textField.font
= [UIFont
systemFontOfSize:25];

   //获取键盘中心点

    self.center =self.textField.center;

    [self.view addSubview:self.textField];

   //创建观察者,监听键盘的弹出

 [NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardHandle:)name: UIKeyboardWillShowNotification object:nil];

    //创建观察者,监听键盘的隐藏   [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardHandle:)name:UIKeyboardWillHideNotification object:nil];

5.keyboardHandle:的方法

//如果这个函数带参数,只能带过来通知

- (void)keyboardHandle:(NSNotification *)notify{

   //获取文本输入框中心点坐标

    CGPoint center =self.textField.center;

   //取出键盘的尺寸值

    NSValue *rectValue = notify.userInfo[UIKeyboardFrameBeginUserInfoKey];

    //官方提供了直接从NSValue转化为CGRect的函数

    CGRect rect = rectValue.CGRectValue;

   //获取键盘的高度

    CGFloat height = rect.size.height;

   //获取通知的名字

    NSString *nameStr = notify.name;

   //判断是哪个通知,做出相应的处理

    //键盘弹出

    if ([nameStr isEqualToString:UIKeyboardWillShowNotification])
{

        center.y =self.center.y
- height;

    }else{//键盘退出

        center = self.center;

    }

   self.textField.center = center;

}
6.键盘退出的方法

//F1:点击屏幕空白处键盘退出

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

    [self.textField resignFirstResponder];

}

#pragma mark - UITextFieldDelegate

//F2:点击Return键键盘退出

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

    [textField resignFirstResponder];

    returnYES;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息