Ios 如何定义广义选择器方法
我的问题可能被错误地描述,但下面的解释会让你明白我在寻找什么 我编写了以下方法在键盘上添加一个“完成”按钮。因为我有很多屏幕,用户必须通过键盘输入值,所以我想在一个地方写这个方法,以避免冗余。我已经编写了一个类,在这个类中我定义了以下方法,我和我正在将UIViewController的textfield和object作为参数传递。我必须添加选择器方法,当用户点击“完成”按钮时将调用该方法。问题是在哪里定义选择器以退出键盘Ios 如何定义广义选择器方法,ios,objective-c,selector,Ios,Objective C,Selector,我的问题可能被错误地描述,但下面的解释会让你明白我在寻找什么 我编写了以下方法在键盘上添加一个“完成”按钮。因为我有很多屏幕,用户必须通过键盘输入值,所以我想在一个地方写这个方法,以避免冗余。我已经编写了一个类,在这个类中我定义了以下方法,我和我正在将UIViewController的textfield和object作为参数传递。我必须添加选择器方法,当用户点击“完成”按钮时将调用该方法。问题是在哪里定义选择器以退出键盘 - (void)addDoneButtonOnToolBar:(UITex
- (void)addDoneButtonOnToolBar:(UITextField*)objUITextField objViewController:(UIViewController*)objViewController
{
//UIToolbar *keyboardDoneButtonView = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0,SCREEN_WIDTH, 40)];
UIToolbar *keyboardDoneButtonView = [[UIToolbar alloc] init];
[keyboardDoneButtonView sizeToFit];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:objViewController action:@selector(doneKeyboardClicked:)];
[keyboardDoneButtonView setItems:[NSArray arrayWithObjects:doneButton, nil]];
objUITextField.inputAccessoryView = keyboardDoneButtonView;
}
因此,不恰当的是,在何处定义“doneKeyboardClicked:”?您可以将其归入一个类别:
@implementation UIViewController (Selector)
- (void)doneKeyboardClicked:(UIBarButtonItem *)item {
[self.view endEditing:true];
}
@end
我认为明智的解决方案是使用UITextField的子类,在init上设置inputAccessoryView,并单击选择器DoneKeyboard,如下所示:
-(void) doneKeyboardClicked:(UIBarButtonItem*)item {
[self resignFirstResponder];
}
您的
objUITextField
在哪里?您已经定义了target:objViewController
,因此它应该在objViewController
中。我已经在单独的类中声明并定义了此方法,在该类中我将textfield和视图控制器的对象作为参数传递,这会给我警告,因为我没有在该类中定义“doneKeyboardClicked”