0

我已经搜索并搜索了这个问题,我承认我可能遗漏了一些东西,但我没有想法。

我在 mainClass 的 UITableView tableFooterView 中有一个 UITextField:

// Set table footer
PAPPhotoDetailsFooterView *footerView = [[PAPPhotoDetailsFooterView alloc] initWithFrame:[PAPPhotoDetailsFooterView rectForView]];
commentTextField = footerView.commentField;
commentTextField.delegate = self;
self.tableView.tableFooterView = footerView;

textField 是在 PAPPhotoDetailsFooterView 类中设置的,如下所示:

 commentField = [[UITextField alloc] initWithFrame:CGRectMake( 25.0f, 10.0f, 227.0f, 31.0f)];
 commentField.font = [UIFont systemFontOfSize:kCommentCellContentLabelFontSize];
 commentField.placeholder = @"Name photo";
 commentField.returnKeyType = UIReturnKeySend;
 commentField.autocapitalizationType = UITextAutocapitalizationTypeNone;
 commentField.autocorrectionType = UITextAutocorrectionTypeNo;
 commentField.textColor = [UIColor colorWithRed:73.0f/255.0f green:55.0f/255.0f blue:35.0f/255.0f alpha:1.0f];
 commentField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
 [commentField setValue:[UIColor colorWithRed:154.0f/255.0f green:146.0f/255.0f blue:138.0f/255.0f alpha:1.0f] forKeyPath:@"_placeholderLabel.textColor"]; 
 [mainView addSubview:commentField];

这是我的 mainClass 中的 textFieldShouldReturn 方法:

#pragma mark - UITextFieldDelegate
- (BOOL)textFieldShouldReturn:(UITextField *)textField {

    // Call method to store comment
    NSString *trimmedComment = [textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    [self parseAndStoreComment:trimmedComment];

    // Reset the text field
    [textField setText:@""];
    return  [textField resignFirstResponder];

}

还有我的键盘方法:

- (void)keyboardWillShow:(NSNotification*)note {
    // Scroll the view to the comment text box
    NSDictionary* info = [note userInfo];
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;   
    [self.tableView setContentOffset:CGPointMake(0.0f, self.tableView.contentSize.height-kbSize.height) animated:YES];

}


- (void)keyboardWillHide:(NSNotification*)note {       
    [self.tableView setContentOffset:CGPointMake(0.0f, self.tableView.tableFooterView.frame.origin.y) animated:YES];
}

发生的事情是,当我单击 textField - 或 - 当我在键盘上按回车键时,tableView 似乎滚动到我在keyboardWillHide 中设置的任何内容,但随后它会立即快速滚动到 tableView 完全向上的位置并且屏幕外。

我尝试将动画设置setContentOffset为 2.0f 秒keyboardWillHide,看看会发生什么,这将导致我指定的 contentOffset 滚动超过 2 秒,但随后它会立即射出屏幕。

在我的代码滚动后,某些东西正在滚动 tableView,但我不知道它是什么。

4

1 回答 1

0

所以我意识到这只发生在模拟器上。我一直在模拟器和设备上测试应用程序,但我想每次我尝试调试这个问题时,我只在模拟器上测试过。

不知道为什么它会在模拟器上发生。

于 2013-10-20T18:21:58.800 回答