0

У меня есть приложение, которое учитывает детали клиента, созданные для iPad. Когда пользователь забирает UITextField в нижнюю половину ViewController, frame программно сдвигается вверх, чтобы поля не были скрыты за клавиатурой. (Я попытался реализовать UIScrollView, но просто не могу заставить его работать.) Небольшая проблема, с которой я столкнулся сейчас, - это то, когда сдвигается frame, вы можете смутно видеть черный за ним. Это не большая проблема, потому что я изменил время анимации, и черный фон едва заметен, но у меня есть ощущение, что есть более элегантное решение.Изменить цвет фона BEHIND Frame ViewController (при изменении frame.origin)?

Вот мой код, чтобы сместить frame:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    // Animate frame up if lower textfields are tapped 
    if (([textField isEqual:_emailField]) || ([textField isEqual:_dobField]) || ([textField isEqual:_niNumField])) { 
     [UIView beginAnimations:nil 
        context:NULL]; 
     [UIView setAnimationDuration:0.35f]; 
     CGRect frame = self.view.frame; 
     frame.origin.y = -210; 
     [self.view setFrame:frame]; 
     [UIView commitAnimations]; 
    } else { 
     // Return frame to original position if other textfields are tapped 
     [self dismissKeyboard]; 
    } 
    return YES; 
} 

- (void)dismissKeyboard { 
     [UIView beginAnimations:nil 
         context:NULL]; 
     [UIView setAnimationDuration:0.15f]; 
     CGRect frame = self.view.frame; 
     frame.origin.y = 0; 
     [self.view setFrame:frame]; 
     [UIView commitAnimations]; 
} 

Вот краткий скриншот того, что я пытаюсь описать. Левое изображение - ViewController нормально, правый снимок, когда frame был сдвинут вверх. Вы можете видеть (неопределенно) почти в соответствии со второй строкой символов, где останавливается frame.

Left: Normal frame. Right: frame.origin.y altered

Я понимаю, что это не похоже на вопрос, потому что он едва виден на всех, но я должен был ускорить анимацию сокрытия клавиатуры или иначе frame тащит позади и черный фон становится видимый. Мне интересно: есть ли способ изменить этот цвет? Или это то, к чему у нас нет доступа? Если кто-то может предложить более элегантный метод для того, что я пытаюсь сделать, я бы с радостью принял лучшее решение. Заранее спасибо.

ответ

0

Ваш UIViewController вид сверху добавлен к основному UIWindow. Таким образом, вы сможете добиться того, чего хотите, изменив цвет фона UIWindow.

В UIApplicationDelegate:

self.window.backgroundColor = [UIColor whiteColor]; 

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

+0

Используя ваш код, я смог успешно изменить цвет 'window' на белый. Это решает проблему, спасибо! Я снова рассмотрю 'UIScrollView' и попытаюсь его реализовать. Спасибо за вашу помощь :) – rosshump

Смежные вопросы