【发布时间】:2014-06-29 22:30:38
【问题描述】:
我从this SO question 得到了下面的代码。当我开始编辑时,我试图向上滑动文本字段(因为否则它们会被 iPhone 键盘覆盖)。但是,日志语句显示 textFieldDidBeginEditing 方法没有被调用。
我在 UIViewController 的两个不同子类中有以下代码。例如,在其中一个中,我有一个从情节提要连接到 UIViewController 的文本字段,如下所示
@property (strong, nonatomic) IBOutlet UITextField *mnemonicField;
我将文本字段移到视图的顶部(即未被键盘覆盖),以便我可以对其进行编辑以尝试触发日志语句,但它不起作用。否则文本字段按预期工作,即我输入的数据将保存到 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];
}
【问题讨论】:
-
是否调用了其他任何委托方法或您何时设置委托?
-
@larme 我必须设置一个代表才能工作?不知道
-
textFieldDidEndEditing: 是一个委托方法。这是UITextFieldDelegate方法,而不是UITextField方法。 -
对我来说,我已将我的 TextField 添加到 UIViewController,并且我已将 UIViewController 的视图作为子视图添加到我的主 VC 中。然后我需要转到我的主 VC 并包含代码
[self addChildViewController:myVC];以便 textField 代表开始在该 VC 中工作。很惊讶我以前没有遇到过这种情况
标签: ios objective-c