具有tableview键盘的文本字段,当uitableview滚动禁用时避免

时间:2014-11-03 09:18:40

标签: uitableview keyboard textfield tpkeyboardavoiding

我在tableview上有10个文本字段,禁用了tableview滚动。

如何处理键盘避开文本字段

以下是我尝试过的

// 键盘显示时注册通知

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

// Register notification when the keyboard will be hide
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWillBeHidden:)
                                             name:UIKeyboardWillHideNotification
                                           object:nil];

pragma mark - 键盘通知(在发送UIKeyboardDidShowNotification时调用。)

- (void)keyboardWasShown:(NSNotification*)aNotification
{
    NSDictionary* info = [aNotification userInfo];
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
    guestRechargeTableView.contentInset = contentInsets;
    guestRechargeTableView.scrollIndicatorInsets = contentInsets;

    // If active text field is hidden by keyboard, scroll it so it's visible
    // Your app might not need or want this behavior.
    CGRect aRect = self.view.frame;
    aRect.size.height -= kbSize.height;

    if (!CGRectContainsPoint(aRect, activeField.frame.origin) )
 {

        [guestRechargeTableView scrollRectToVisible:activeField.frame animated:YES];

    }
}

// 在发送UIKeyboardWillHideNotification时调用

- (void)keyboardWillBeHidden:(NSNotification*)aNotification

{

    UIEdgeInsets contentInsets = UIEdgeInsetsZero;
    guestRechargeTableView.contentInset = contentInsets;
    guestRechargeTableView.scrollIndicatorInsets = contentInsets;

}

这在文本字段中选择并向上移动时工作正常但不正确。为该答案或任何其他替代答案提供解决方案..

快乐编码......

0 个答案:

没有答案