鍵盤收起

代理

     //開始編輯輸入框的時候,軟鍵盤出現,執行此事件
       -(void)textFieldDidBeginEditing:(UITextField *)textField
    {
            CGRect frame=textField.frame;
            int offset =frame.origin.y+32-(self.view.frame.size.height-216.0);//鍵盤高度216
            NSTimeInterval animationDuration=0.30f;
            [UIView beginAnimations:@"ResizeForKeyboard" context:nil];
            [UIView setAnimationDuration:animationDuration];
            //將視圖的y座標上移offset 個單位以便彈出地方用於鍵盤的顯示
            if (offset>0) {
                self.view.frame=CGRectMake(0.0f, -offset, self.view.frame.size.width, self.view.frame.size.height);
                [UIView commitAnimations];
            }
        }
        //engter鍵收回鍵盤
        - (BOOL)textFieldShouldReturn:(UITextField *)textField{
            [textField resignFirstResponder];
            return YES;
        }
        //輸入結束, 彈回鍵盤
        -(void)textFieldDidEndEditing:(UITextField *)textField
        {
            self.view.frame=CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
        }
        //點擊屏幕, 收回鍵盤
        -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
            [self.view endEditing:YES];
        }

通知

    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
        [center addObserver:self selector:@selector(keyboardAppear:) name:UIKeyboardWillShowNotification object:nil];
        [center addObserver:self selector:@selector(keyboardDisappear:) name:UIKeyboardWillHideNotification object:nil];

    -(void)keyboardAppear:(NSNotification*)notification{ 
        NSDictionary*info = notification.userInfo;
        CGRect keyboardFrame = [info[UIKeyboardFrameEndUserInfoKey] CGRectValue];
        CGRect frame =  self.inputView3.frame;
        frame.origin.y = keyboardFrame.origin.y - self.inputView3.bounds.size.height;

        UIViewAnimationOptions optiones = [info[UIKeyboardAnimationCurveUserInfoKey] unsignedIntegerValue];
        NSTimeInterval duration = [info[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
        [UIView animateWithDuration:duration
                              delay:0.0
                            options:optiones
                         animations:^{
                             self.inputView3.frame = frame;
                         }
                         completion:nil];
    }

    -(void)keyboardDisappear:(NSNotification*)notification{

        NSDictionary*info = notification.userInfo;
        CGRect frame =  self.inputView3.frame;
        frame.origin.y = self.view.bounds.size.height;
        UIViewAnimationOptions optiones = [info[UIKeyboardAnimationCurveUserInfoKey] unsignedIntegerValue];
        NSTimeInterval duration = [info[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
        [UIView animateWithDuration:duration
                              delay:0.0
                            options:optiones
                         animations:^{
                             self.inputView3.frame = frame;
                         }
                         completion:nil];
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章