【问题标题】:Adding GestureRecognizer and Action in a Singleton Class在单例类中添加 GestureRecognizer 和 Action
【发布时间】:2013-05-20 21:11:50
【问题描述】:

我很难写出标题,我也不知道这个问题是否是一种好的做法,但我相信这里有人会告诉我。

我有一个实用程序类,我正在添加一个将隐藏视图控制器上的键盘的类方法。

在 Utilities.m 中:

+ (void) hideKeyboard:(UIViewController*)viewController
{
    //add gesture recognizer
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
        initWithTarget:viewController action:@selector(dismissKeyboard)];
    [viewController.view addGestureRecognizer:tap]; 
}

- (void)dismissKeyboard
{
    //resign first responder
    [viewController.view endEditing:YES]; //how can I get the correct VC here?
}

在每个视图控制器中我都有[Utilities hideKeyboard:self];

我不知道如何处理手势识别器的操作。

有没有办法以某种方式将操作设置为视图控制器中的方法?
例如:... action:@selector(VIEW_CONTROLLER_METHOD_HERE)];

我还尝试设置操作并传递参数,以便可以引用当前视图控制器,但我不知道如何在选择器中传递参数。这也不适合单例类,我不认为。
例如:... action:@selector(dismissKeyboard:VIEW_CONTROLLER)]; //I know this is wrong, but don't know how to do it correctly

那么,是否可以在实用程序类中创建手势识别器,还是我走错了方向?如果我需要更清楚地解释任何事情,请告诉我。

【问题讨论】:

  • 您是否有理由想在单例中完成所有这些操作?另外,你什么时候放下键盘?对于文本输入? (resignFirstResponder?)
  • 为方便起见,我只需要在任何视图控制器中调用[Utilities hideKeyboard]; 即可隐藏键盘。 [viewController.view endEditing:YES]; 实际上辞去了第一响应者的职务。 (具体不知道)

标签: ios


【解决方案1】:

我认为您要求这样做,但您最好将 viewController 子类化并在整个应用程序中使用它。然后你可以调用 [selfdismissKeyboard];

+ (void)dismissKeyboard:(UIViewController*)viewController
{
    //resign first responder
    [viewController.view endEditing:YES]; //how can I get the correct VC here?
}

然后用同样的方式调用它

[Utilities dismissKeyboard:self];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 2014-09-09
    • 2019-07-09
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    相关资源
    最近更新 更多