keyboardWillShowNotification边缘情况

时间:2011-07-24 22:53:30

标签: iphone ios uitableview uikit nsnotificationcenter

这是操作顺序的问题

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];    
[nc addObserver:self 
       selector:@selector(keyboardWillShow:) 
           name:UIKeyboardWillShowNotification 
         object:nil];
[nc addObserver:self 
       selector:@selector(keyboardWillHide:) 
           name:UIKeyboardWillHideNotification 
         object:nil];

然后我将一个文本框添加到UITableViewCell:

[textField addTarget:self 
              action:@selector(textFieldBegin:) 
    forControlEvents:UIControlEventEditingDidBegin];

[cell addSubview:textField];

在textFieldBegin中,我将scrollToRowAtIndexPath移动到正在编辑的单元格。
在keyboardWillShow中,我调整tableView的框架以允许键盘 textFieldBegin keyboardWillShow 之前被调用,因此第一次显示它时无法滚动。

是否有一种解决这种疏忽的方法?

2 个答案:

答案 0 :(得分:1)

您可以在开始时将当前滚动位置存储在变量中,然后在keyboardwillshow通知中,您可以重新滚动到该变量中存储的任何位置。

我认为这样可以让您将不同的动画保留在他们所属的位置。

答案 1 :(得分:0)

不是监听UIKeyboardWillShowNotification,而是可以对UITextFieldDelegate方法textFieldDidBeginEditing:作出反应,并在该方法中调整大小/滚动,因为在之后显示键盘