由于某种原因,方法DidBeginEditing:(UITextField*)textfield不起作用

Dan*_*Med 0 objective-c uitextfield ios

我正试图在键盘显示时向上移动视图,因此它不会掩盖屏幕,但由于某种原因,它-(void)DidBeginEditing: (UITextField *)textfield无法正常工作.

- (void)textFieldDidBeginEditing:(UITextField *)ga1
{
    /* should move views */
    self.view.center = CGPointMake(self.view.center.x, self.view.center.y + 220);
}

- (void)textFieldDidEndEditing:(UITextField *)ga1
{
    /* should move views */
    self.view.center = CGPointMake(self.view.center.x, self.view.center.y - 220);

}
Run Code Online (Sandbox Code Playgroud)

它也没有进入方法,谁能告诉我为什么?

Ada*_*amG 5

在类的接口中添加行,所以在.m文件中,你将它放在@implementation所在的位置...

@interface MyClassName () <UITextFieldDelegate>
 // properties can also go here
 // for example dragging the IBOutlet for the textfield from the storyboard
@end
Run Code Online (Sandbox Code Playgroud)

然后你在viewDidLoad中应该像这样设置UITextField的委托......

-(void)viewDidLoad {
 // whatever code
 self.textField.delegate = self;
}
Run Code Online (Sandbox Code Playgroud)

或者,更干净地,您可以通过控制单击文本字段并将指示器拖动到下方栏中的视图控制器类图标(最左侧的图标),在故事板中执行此操作.

另外,为什么要在实现"ga1"中调用textField的参数?你应该称之为最佳实践

 - (void)textFieldDidBeginEditing:(UITextField *)textField
Run Code Online (Sandbox Code Playgroud)

最后要注意的是,如果您有多个textField,则应按上述方式为每个textField设置委托.这就是故事板的方式是"更干净"的原因,因为它使您无法在代码中使用多个委托声明.