我是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/