让我们假设我们有一个应用程序的登录屏幕。登录屏幕实现了一个UITableViewController,其中包含一个UITableViewUITableView有1个部分,该部分包含两个单元格(请参阅下面的情节提要)。

 

当前行为

当用户开始编辑电子邮件字段时-使用占位符输入您的电子邮件-键盘与密码字段重叠-使用占位符输入您的密码。



所需行为:

当用户开始编辑电子邮件字段时,键盘不应与这两个字段重叠,并且键盘应位于这两个字段下方。

尝试的解决方案

我试图在我的LoginFormController : UITableViewController中使用以下命令来强制UITableView滚动到适当的位置,但无济于事:

-(BOOL) textFieldSHouldBeginEditing:(RCTextField *)textField
{
    [[self.view viewWithTag:textField.tag+1] becomeFirstResponder];

    // get the scroll index path of the last row in the first section
    NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:1 inSection:0];

    // scroll the view there
    [[self tableView] scrollToRowAtIndexPath:scrollIndexPath
                            atScrollPosition:UITableViewScrollPositionBottom animated:YES];

    return YES;
}


我的LoginFormController : UITableViewController界面:

//
//  LoginFormController.h
//  Zealoushacker
//
//  Created by Alex Notov on 7/31/13.
//  Copyright (c) 2013 Zealoushacker, Inc. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface LoginFormController : UITableViewController <UITextFieldDelegate>

@end


LoginFormController当然引用了tableView

最佳答案

您可以尝试将TPKeyboardAvoiding添加到您的项目中

TPKeyboardAvoiding-一种通用的嵌入式解决方案,用于在iOS中将文本字段移出键盘。

要与UITableViewController classes一起使用,请将TPKeyboardAvoidingTableView.mTPKeyboardAvoidingTableView.h放入项目中,并使UITableView成为xib中的TPKeyboardAvoidingTableView。

检查Sample

10-07 20:42