Логика перемещения текстового поля над клавиатурой при нажатии

Прямо сейчас у меня есть базовый код для перемещения текстового поля над клавиатурой, когда вы начинаете редактировать. Однако размер текстового поля зависит от устройства и ориентации. Итак, я написал грубый способ сделать это, который не остается постоянно прямо над клавиатурой, а вместо этого будет подниматься дальше, когда вы его поворачиваете, и поэтому он не выглядит так профессионально, как мне хотелось бы.

Основной смысл моего вопроса заключается в том, существует ли логика для получения размера клавиатуры на основе устройства и ориентации и автоматического использования этого значения и, надеюсь, быстрее, чем это.

Если это лучший способ, пожалуйста, дайте мне знать. В противном случае просьба предоставить информацию. Вот код, который у меня есть. (Это просто код перехода вверх, а не код перехода вниз, чтобы не занимать слишком много места)

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

    //Get Device Type
    NSString *deviceType = [[UIDevice currentDevice] model];

    //Animate Text Field
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDuration:0.4];
    [UIView setAnimationBeginsFromCurrentState:YES];

    if ([deviceType isEqualToString:@"iPhone"]) {

        //Size For iPhone
        googleBar.frame = CGRectMake(googleBar.frame.origin.x - 62.0, (googleBar.frame.origin.y - 210.0), googleBar.frame.size.width + 120.0, googleBar.frame.size.height);

    } else if ([deviceType isEqualToString:@"iPad"]) {

        //Size for iPad
        googleBar.frame = CGRectMake(googleBar.frame.origin.x - 62.0, (googleBar.frame.origin.y - 320.0), googleBar.frame.size.width + 120.0, googleBar.frame.size.height);

    } else if ([deviceType isEqualToString:@"iPod touch"]) {

        //Size For iPod Touch
        googleBar.frame = CGRectMake(googleBar.frame.origin.x - 62.0, (googleBar.frame.origin.y - 210.0), googleBar.frame.size.width + 120.0, googleBar.frame.size.height);

    } 

    [UIView commitAnimations];

} 
5
задан JTApps 3 February 2012 в 20:45
поделиться