textViewDidBeginEditing

textViewDidBeginEditing

我是Objective C的新手。我要做的很简单,就是在聚焦文本字段时为键盘动画,而在不聚焦时缩小键盘。我已经按照其他教程逐步设置了此方法,但没有用。当textfeld成为焦点时,永远不会调用textViewDidBeginEditing事件。

@interface ViewController : UIViewController<UITextFieldDelegate>

@property (weak, nonatomic) IBOutlet UITextField *cCodeTextField;

@property (weak, nonatomic) IBOutlet UITextField *jidTextField;

- (IBAction)nextBtnTapped:(id)sender;
@end


我也将委托设置为文本字段,但是它不起作用。

- (void)viewDidLoad {
    [super viewDidLoad];

    [self addTextFieldBorder:_jidTextField];
    [self addTextFieldBorder:_cCodeTextField];

    _jidTextField.delegate = self;
}

-(void) textViewDidBeginEditing:(UITextView *)textView {
    NSLog(@"Enter");
}

最佳答案

看来您的ViewController类正在使用错误的委托来实现方法。当它应该实现UITextFieldDelegate方法时,它正在实现UITextViewDelegate方法。

请注意,“ jidTextField”的类型为UITextField。

您的委托方法称为“ textViewDidBeginEditing”,它是一个UITextViewDelegate方法,并以UITextView作为参数。

这里的问题是您的类正在实现UITextViewDelegate的委托函数,而不是UITextFieldDelegate的委托函数。

正确的方法定义是:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;


这是正确委托的文档的链接:
https://developer.apple.com/reference/uikit/uitextfielddelegate

希望这可以帮助!

关于ios - textViewDidBeginEditing在IOS 9中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41732435/

10-14 22:38