Otrzymałem poniższy kod z this SO pytanie. Próbuję przesuwać pola tekstowe, kiedy zaczynam edycję (ponieważ w przeciwnym razie zostaną zakryte klawiaturą iPhone'a). Jednak dziennik ujawnia, że metoda textFieldDidBeginEditing nie jest wywoływana.textFieldDidBeginEditing: nie nazywa się
Mam poniższy kod w dwóch różnych podklasach UIViewController. W jednym z nich, na przykład, mam pole tekstowe połączone z ujęć do UIViewController jak ten
@property (strong, nonatomic) IBOutlet UITextField *mnemonicField;
przeniosłem pole tekstowe do górnej części widoku (tj nieobjęte klawiaturze), tak że mogłem edytuj go, aby spróbować wyzwolić instrukcję dziennika, ale nie zadziałał. Pole tekstowe działa w oczekiwany sposób, tzn. Dane, które wprowadzam, zapisywane są w coreData itd. Itd.
Czy możesz wyjaśnić, co robię źle?
- (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];
}
Czy którykolwiek z innych metod delegatów są wywoływane lub kiedy ustawiasz delegata? – Larme
@larme Muszę ustawić delegata, żeby działał? nie wiedział, że – Leahcim
'textFieldDidEndEditing': jest metodą delegata. Jest to metoda 'UITextFieldDelegate', a nie' UITextField'. – Larme