温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

iOS如何实现防键盘遮挡

发布时间:2021-06-28 13:38:41 来源:亿速云 阅读:216 作者:小新 栏目:移动开发

这篇文章主要介绍了iOS如何实现防键盘遮挡,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

当我们在UITextField输入数据时经常弹出键盘遮挡界面,解决方法是:在弹出键盘时将整个UIVIew向上移动,在键盘消失时,UIVIew还原。

实例代码如下:

@interface ViewController ()<UITextFieldDelegate> @property(nonatomic,strong)UITextField* tf; @end @implementation ViewController - (void)viewDidLoad {  [super viewDidLoad];  self.tf = [[UITextField alloc]initWithFrame:CGRectMake(10, 600, 100, 20)];  self.tf.delegate = self;  self.tf.backgroundColor = [UIColor blackColor];  [self.view addSubview:self.tf]; } #pragma mark life Circle -(void)viewWillAppear:(BOOL)animated{  [super viewWillAppear:animated];  //后台切换到前台通知  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillEnterForeground)name:UIApplicationWillEnterForegroundNotification object:nil];  [[NSNotificationCenter defaultCenter] addObserver:self             selector:@selector(keyboardWillHide:)              name:UIKeyboardWillHideNotification             object:nil];  [self.view endEditing:YES]; } - (void)applicationWillEnterForeground{  [self.view endEditing:YES]; } -(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{  [self.view endEditing:YES]; } #pragma mark UITextFieldDelegate -(void)textFieldDidBeginEditing:(UITextField *)textField{  //第一个cell不往上弹输入框的位置  // if(indexPath.row!=0){  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChange:) name:UIKeyboardWillChangeFrameNotification object:nil];  // } } -(void)textFieldDidEndEditing:(UITextField *)textField{ } #pragma mark 键盘操作 - (void)keyboardWillChange:(NSNotification *)note {  NSDictionary *userInfo = note.userInfo;  CGFloat duration = [userInfo[@"UIKeyboardAnimationDurationUserInfoKey"] doubleValue];  CGRect keyFrame = [userInfo[@"UIKeyboardFrameEndUserInfoKey"] CGRectValue];  //这个64是我减去的navigationbar加上状态栏20的高度,可以看自己的实际情况决定是否减去;  CGFloat moveY = keyFrame.origin.y -self.tf.frame.origin.y-self.tf.frame.size.height;  NSLog(@"%f",moveY);  [UIView animateWithDuration:duration animations:^{   self.view.transform = CGAffineTransformMakeTranslation(0, moveY);  }]; } - (void)keyboardWillHide:(NSNotification *)nsnotification {  [[NSNotificationCenter defaultCenter]removeObserver:self name:UIKeyboardWillChangeFrameNotification object:nil];  [UIView animateWithDuration:0.2 animations:^{   self.view.transform = CGAffineTransformMakeTranslation(0, 0);  }]; } @end

感谢你能够认真阅读完这篇文章,希望小编分享的“iOS如何实现防键盘遮挡”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ios
AI