辞去 Push Segue 的第一响应者

Posted

技术标签:

【中文标题】辞去 Push Segue 的第一响应者【英文标题】:Resign First Responder on Push Segue 【发布时间】:2014-09-08 22:53:31 【问题描述】:

我有一个 push segue,想在视图之间传输数据。如果用户点击导航栏中的下一步按钮,我需要一种不同的方式来让第一响应者辞职。我有 [textField resignFirstResponder];在导航栏按钮方法中,但由于某种原因,它在下一页 viewDidLoad 之后被调用。

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if ([segue.identifier isEqualToString:[NSString stringWithFormat:@"thridClubPage"]]) 
    thirdClubPage *nextPage = segue.destinationViewController;

    nextPage.title = self.navigationItem.title;
    nextPage.location = self.collegeString;
    nextPage.people = self.membersString;
    nextPage.leader = self.presidentString;
    nextPage.Email = self.presidentEmailString;



- (IBAction)finishPage:(id)sender 
[self.presCell.presidentEmail resignFirstResponder];

segue 在没有退出 textField 的情况下执行。

【问题讨论】:

【参考方案1】:

一个快速的解决方案是从 IB 中的按钮中删除 segue,然后在两个视图控制器之间重新绘制它。 (换句话说,当拖出 segue 时,不要从按钮控制拖拽,从包含它的视图控制器控制拖拽)。给 segue 一个标识符,比如@"NextSegue"。

现在您可以通过自己触发 segue 来控制发生的顺序...

- (IBAction)finishPage:(id)sender 
    [self.presCell.presidentEmail resignFirstResponder];
    [self performSegueWithIdentifier:@"NextSegue" sender:self];

【讨论】:

以上是关于辞去 Push Segue 的第一响应者的主要内容,如果未能解决你的问题,请参考以下文章

存储指针并辞去第一响应者后无法重新聚焦 UITextField

当要求 NSView 辞去第一响应者的职务时,如何获得 firstResponder-to-be?

iOS文本字段不辞职第一响应者

UITextField 辞职第一响应者 iOS4

UITextField, becomeFirstResponder, resignFirstResponder

使用 UINavigationController 时在 didSelectRowAtIndexPath 中辞职第一响应者