虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > IOS编程/Objective-C > iOS 防键盘遮挡的实例

iOS 防键盘遮挡的实例
类别:IOS编程/Objective-C   作者:码皇   来源:互联网   点击:

下面小编就为大家分享一篇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 防键盘遮挡的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

  • iOS项目开发键盘弹出遮挡输入框问题解决方案
  • 解决移动端 ios 系统键盘遮挡的问题
  • IOS NSNotification 键盘遮挡问题的解决办法
  • IOS数字键盘左下角添加完成按钮的实现方法
  • iOS中键盘 KeyBoard 上添加工具栏的方法
  • iOS中只让textField使用键盘通知的实例代码
  • IOS 键盘挡住输入框的问题解决办法
  • 代码详解ios键盘收起问题
相关热词搜索: iOS 防键盘 遮挡