ios - textFieldDidBeginEditing : not getting called

标签 ios objective-c

我从 this 得到了下面的代码所以问题。当我开始编辑时,我试图向上滑动文本字段(因为否则它们会被 iPhone 键盘覆盖)。但是,日志语句显示未调用 textFieldDidBeginEditing 方法。

我在 UIViewController 的两个不同子类中有以下代码。例如,在其中一个中,我有一个从 Storyboard连接到 UIViewController 的文本字段,如下所示

@property (strong, nonatomic) IBOutlet UITextField *mnemonicField;

我将文本字段移至 View 的顶部(即未被键盘覆盖),以便我可以对其进行编辑以尝试触发日志语句,但它不起作用。文本字段否则按预期工作,即我输入的数据被保存到 coreData 等。

你能解释一下我可能做错了什么吗?

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    NSLog(@"The did begin edit method was called");
    [self animateTextField: textField up: YES];
}


- (void)textFieldDidEndEditing:(UITextField *)textField
{
    [self animateTextField: textField up: NO];
}

- (void) animateTextField: (UITextField*) textField up: (BOOL) up
{
    const int movementDistance = 180; // tweak as needed
    const float movementDuration = 0.3f; // tweak as needed

    int movement = (up ? -movementDistance : movementDistance);

    [UIView beginAnimations: @"anim" context: nil];
    [UIView setAnimationBeginsFromCurrentState: YES];
    [UIView setAnimationDuration: movementDuration];
    self.view.frame = CGRectOffset(self.view.frame, 0, movement);
    [UIView commitAnimations];
}

最佳答案

您还没有在您的 ViewController 类中分配 UITextField委托(delegate):

在您的 viewcontroller.m 文件中,在 ViewDidLoad 方法中,执行以下操作:

self.mnemonicField.delegate=self; 

在您的 viewcontroller.h 文件中,执行以下操作:

@interface YourViewController : ViewController<UITextFieldDelegate>

关于ios - textFieldDidBeginEditing : not getting called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23611104/

相关文章:

ios - 将地理点分为经纬度

ios - 如何从 CTlineRef 中提取文本字符串?

iphone - 如何在ios中将FLAC文件转换为wav文件?

html - 如何让小内容填充UIWebView?

ios - 打开 Siri 停止 AVAudioPlayer

ios - 从两个较小的 UIImage 创建 UIImage

ios - 创建一个转换,当 View 被移除时,它的移除依赖于 @State 值

ios - Cocos2d v3 - addChild 方法产生性能问题

ios - 如何从 CocoaAsyncUDPSocket 获取地址

iphone - 为什么 self.editing 和 self.tableView.editing 工作相同/正常?