在Singleton类中添加GestureRecognizer和Action

时间:2013-05-20 21:11:51

标签: ios

我很难写出标题,我也不知道这个问题是不是很好,但我相信有人会告诉我。

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

在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)];

我也试过设置动作并传递一个参数,这样我就可以引用当前的视图控制器,但我不知道如何在选择器中传递参数。这也只是不适合Singleton类,我不管怎么说。
例如:... action:@selector(dismissKeyboard:VIEW_CONTROLLER)]; //I know this is wrong, but don't know how to do it correctly

那么,是否可以在实用程序类中创建手势识别器,或者我是否朝错误的方向前进?如果我需要更清楚地解释一下,请告诉我。

1 个答案:

答案 0 :(得分:2)

我认为你要求这样做,但你可能最好只是继承viewController并在整个应用程序中使用它。然后你可以打电话给[self dismissKeyboard];

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

然后以同样的方式调用

[Utilities dismissKeyboard:self];