代码之家  ›  专栏  ›  技术社区  ›  sehugg

BecomeFirstResponder似乎只有第一次做手势

  •  0
  • sehugg  · 技术社区  · 17 年前

    通过在uiviewController中执行以下操作,我使我的应用程序震动手势兼容:

    - (void)viewWillAppear:(BOOL)animated
    {
        [self.view becomeFirstResponder];
        [super viewWillAppear:animated];
    }
    

    问题是,当我切换到另一个视图(我使用“实用程序”模板,该模板有一个翻转视图和一个根视图控制器来管理这两个视图)时,当我返回时,震动姿势将停止工作。

    我明白了 viewWillAppear 方法被调用,但视图似乎没有在第二次恢复第一响应者状态。

    2 回复  |  直到 17 年前
        1
  •  2
  •   sehugg    17 年前

    谁知道…你得打电话给 becomeFirstResponder 在里面 viewDidAppear 而不是 viewWillAppear .

        2
  •  1
  •   mobibob    17 年前

    是的,这为我证实了…我试图将控制器设置为来自应用程序委托的第一响应者。同时,我发现在策略方法中加入这个日志语句对调试非常有帮助。

    NSLog(@"%s: I %s first responder! (%@)", __FUNCTION__, [self isFirstResponder] ? "am" : "am not", self);
    

    另外,为了允许我在任意时间触发它,我启用了“定向”方法并将其放在那里。

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    NSLog(@"%s: I %s first responder! (%@)", __FUNCTION__, [self isFirstResponder] ? "am" : "am not", self);
    return YES;
    }