iphone SDK: CGAffineTransform не работает в iOS 4? - PullRequest
0 голосов
/ 23 августа 2010

Я использую следующий код для перемещения uialertview с uitextfield в нем. Предполагается, что alertView сдвигается вверх, когда появляется клавиатура, и сдвигается назад, как только она исчезает. Следующий код работал отлично для меня под IOS 3.1.2. Но по какой-то причине он не работает под iOS 4.0 ..... Кажется, проблема заключается в преобразовании, которое я делаю, но я понятия не имею, что именно происходит не так. Было бы здорово, если бы кто-нибудь знал решение! Заранее спасибо! вот мой код:

- (void)addItemAction{

workoutName = [[UIAlertView alloc] initWithTitle:@"New Workout" message:@"Insert the name of your new workout:\n                " delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Done", nil];
workoutName.cancelButtonIndex = 0;
UITextField *titleField = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 90.0, 260.0, 25.0)];
titleField.delegate = self;
titleField.borderStyle = UITextBorderStyleRoundedRect;
titleField.returnKeyType = UIReturnKeyDone;
[workoutName addSubview:titleField];
[workoutName show];

}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {

[textField resignFirstResponder];
return YES;

}



- (void)textFieldDidBeginEditing:(UITextField *)textField {

[UIView beginAnimations:nil context:NULL];
CGAffineTransform myTransform = CGAffineTransformMakeTranslation(0.0, -70.0);
[workoutName setTransform:myTransform];
[UIView commitAnimations];

}


- (void)textFieldDidEndEditing:(UITextField *)textField {

[UIView beginAnimations:nil context:NULL];
CGAffineTransform myTransform = CGAffineTransformMakeTranslation(0.0, 0.0);
[workoutName setTransform:myTransform];
[UIView commitAnimations];
if ([textField.text length] != 0) {
    self.newWorkout = textField.text;
}
else {
    self.newWorkout = @"";
}

}

1 Ответ

1 голос
/ 01 октября 2010

iOS 4 изменила поведение в UIAlertView, сделав перевод ненужным.Попробуйте обернуть перевод в if, чтобы проверить, установлена ​​ли у вас версия iOS <4, и применить ее только там - это помогло в нашей ситуации. </p>

Пример:

if ([[[UIDevice currentDevice] systemVersion] floatValue] < 4.0) {
    // translation goes here
}
...