UITextView, UITextField输入内容, 键盘挡住问题


当textView, textField输入内容,被键盘挡住时,需要向上移动整个屏幕View,而不是单单的textView或textField,

移动距离就是键盘挡住textView的长度


// .h中签订协议

.h<UITextViewDeledate, UITextFieldDeledate>

// .m   写 textView,   label    属性

@property (strong,nonatomic)UITextView *nameField;

@property (nonatomic,strong)UILabel *label;



// 初始化textView基本信息

- (void)viewDidLoad {

    [superviewDidLoad];


    _nameField = [[UITextViewalloc]initWithFrame:CGRectMake(0,0,          self.view.frame.size.width,self.view.frame.size.height)];

    _nameField.layer.borderWidth =1;

    _nameField.layer.cornerRadius =5.0;

   _nameField.layer.borderColor = [[UIColorredColor]CGColor];

    [self.viewaddSubview:_nameField];

    _nameField.delegate =self;


// textView水印"个人需求",点击输入时label隐藏

    self.label = [[UILabelalloc]initWithFrame:CGRectMake(0,0,100,20)];

   self.label.text =@"个人需求";

    self.label.tintColor = [UIColorlightGrayColor];

    [_nameField addSubview:self.label];


//使用NSNotificationCenter 鍵盤出現時

    [[NSNotificationCenter defaultCenter]addObserver:self

     

                                            selector:@selector(keyboardWasShown:)

     

                                                name:UIKeyboardDidShowNotification object:nil];

    

    //使用NSNotificationCenter鍵盤隐藏時

    [[NSNotificationCenter defaultCenter]addObserver:self

     

                                            selector:@selector(keyboardWillBeHidden:)

     

                                                name:UIKeyboardWillHideNotification object:nil];



}


// 开始编辑时屏幕自动上移(上移距离就是键盘挡住textView长度)

- (void)textViewDidBeginEditing:(UITextView *)textView

{

   self.label.hidden =YES;

}

//实现当键盘出现的时候计算键盘的高度大小。用于输入框显示位置

- (void)keyboardWasShown:(NSNotification*)aNotification

{

   NSDictionary* info = [aNotificationuserInfo];

    //kbSize即為鍵盤尺寸 (width, height)

    CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue].size;//得到鍵盤的高度

    NSLog(@"hight_hitht:%f",kbSize.height);

    

   CGRect curFrame =self.view.frame;

    [UIView animateWithDuration:0.3f animations:^{

        

       self.view.frame =CGRectMake(curFrame.origin.x, curFrame.origin.y +self.view.frame.size.height -808, curFrame.size.width, curFrame.size.height);

       

    }];

// 808 = 键盘.h + textView.y  + textView.h

}


// 回车键盘收回

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

{

   if ([textisEqualToString:@"\n"]) {

        [textViewresignFirstResponder];

        returnNO;

    }

    return YES;

}


//当键盘隐藏的时候

- (void)keyboardWillBeHidden:(NSNotification*)aNotification

{

    //do something

    [UIView animateWithDuration:0.3f animations:^{

        self.view.frame =CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height);

        

    }];


}



// textField同理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值