当视图控制器从导航堆栈弹出时,为什么UITextField开始编辑?

时间:2014-08-28 21:18:40

标签: ios objective-c ios7 uinavigationcontroller first-responder

我有一个UINavigationController,有一个任意的根视图控制器。然后,我将以下子类UITableViewController推送到导航堆栈:

@interface BugViewController : UITableViewController <UITextFieldDelegate>

@end

@implementation BugViewController

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [[UITableViewCell alloc] init];

    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 0, 200, 30)];
    [textField setBackgroundColor:[UIColor yellowColor]];
    [textField setDelegate:self];

    [[cell contentView] addSubview:textField];
    return cell;
}

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    NSLog(@"did begin editing");
}

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    NSLog(@"did end editing");
}

@end

基本上,它只是一个带有单行的UITableViewController,它包含一个UITextField。

Repro步骤:

  1. 点按文字字段
    • &#34;确实开始编辑&#34;按预期记录
  2. 点击&#34;&lt;回到&#34;在导航栏中
    • &#34;结束编辑&#34;按预期记录
    • &#34;确实开始编辑&#34;并且&#34;确实结束了编辑&#34;再次记录(意外!)
  3. 我正在努力理解为什么文本字段开始然后在后面的动画中再次结束编辑。

    请注意,我可以通过覆盖viewWillDisappear:animated:并在文本字段上调用resignFirstResponder来阻止此行为,但我仍然不了解潜在问题。

0 个答案:

没有答案