2013-05-20 32 views
0

我很難說出標題,而且我也不知道這個問題是否是好的做法,但我確定這裏有人會讓我知道。在Singleton類中添加GestureRecognizer和Action

我有一個工具類,我添加了一個類方法,將隱藏在視圖控制器上的鍵盤。

在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

那麼,是不是可以創造一個實用工具類手勢識別,還是我在錯誤的方向前進?如果我需要更清楚地解釋任何事情,請告訴我。

+0

是否有你想要做這一切在一個單身的一個原因?另外,你什麼時候放下鍵盤?對於文本輸入? (resignFirstResponder?) –

+0

爲了方便起見,我只需要在任何視圖控制器中調用'[Utilities hideKeyboard];'來隱藏鍵盤。 '[viewController.view endEditing:YES];'實際上辭去了第一個響應者。 (我不知道細節) – Ryan

回答

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