0

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

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

在 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

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

4

1 回答 1

2

我想你是在要求这个,但你最好只继承一个 viewController 并在整个应用程序中使用它。然后你可以调用 [selfdismissKeyboard];

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

然后用同样的方式调用

[Utilities dismissKeyboard:self];
于 2013-05-20T21:26:47.800 回答