的UITableViewCell的子视图的UITextField,成为第一个响应者?
-
27-09-2019 - |
题
我有一种使用导航控制器向下钻取一个详细视图,然后如果你被带到一个编辑视图的该单个线,在详细视图中的数据行的编辑一个像核心数据应用在苹果CoreDataBooks例子(除了CoreDataBooks只使用本身就是一个UITextField
,并无特别的UITableViewCell
的像我一个子视图)!
在编辑视图是与单个部分单列和在细胞中UITableviewController
,编程创建其表UITextfield
。
当您选择要编辑的行和编辑视图推送到导航堆栈和编辑观点是动画在屏幕上移动我希望发生的是,我想要的文本框被选为firstResponder使键盘已经示出了作为在屏幕上移动视图采取的位置。像在联系人应用程序中或在应用CoreDataBooks
目前,我有我的应用程序下面的代码引起的视图加载,然后你看到键盘出现(这是不是我想要的,我想要的键盘已经在那里了)
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[theTextField becomeFirstResponder];
}
您不能为文本框还没有被创建这样-viewWillAppear
为零把这个theTextField
。在CoreDataBooks应用程序,他们达到我想要让他们使用相同的代码,但在-viewWillAppear
作为文本字段已创建他们从笔尖加载自己的看法!
反正是有避过此,而无需创建一个笔尖,我要保证实现程序化,以实现更高的灵活性。
非常感谢
解决方案
与苹果开发支持团队沟通后,我有一个答案!
您需要做的是建立在UITextField
屏幕外-(void)loadView;
,然后将其设置为第一个响应然后在viewDidLoad
方法,你可以设置在UITextField
的UITableViewCell
是第一个响应者。下面有一些示例代码(记得我在一家UITableViewController
这样做,所以我创建的tableview以及!
- (void)loadView
{
[super loadView];
//Set the view up.
UIView *theView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.view = theView;
[theView release];
//Create an negatively sized or offscreen textfield
UITextField *hiddenField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, -10, -10)];
hiddenTextField = hiddenField;
[self.view addSubview:hiddenTextField];
[hiddenField release];
//Create the tableview
UITableView *theTableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] bounds] style:UITableViewStyleGrouped];
theTableView.delegate = self;
theTableView.dataSource = self;
[self.view addSubview:theTableView];
[theTableView release];
//Set the hiddenTextField to become first responder
[hiddenTextField becomeFirstResponder];
//Background for a grouped tableview
self.view.backgroundColor = [UIColor groupTableViewBackgroundColor];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
//Now the the UITableViewCells UITextField has loaded you can set that as first responder
[theTextField becomeFirstResponder];
}
我希望这可以帮助任何人停留在相同的位置上我!
如果任何人都可以看到一个更好的方式来做到这一点,请说。
其他提示
尝试做它在viewDidAppear方法,为我工作。
我认为明显的解决方案是在视图控制器的init
方法来创建文本字段。这通常是你配置视图,因为视图控制器确实需要填充的视图属性。
然后可以设置文本框作为第一响应中viewWillAppear
和键盘应尽可能在视图的幻灯片可见。
你试图使用的UINavigationController委托方法:
navigationController:willShowViewController:动画: