我有一个应用程序,可以为iPad打造客户端细节。当用户向UITextField
的下半部分点击ViewController
时,frame
以编程方式向上移动,以便字段不会隐藏在键盘后面。 (我试图实现一个UIScrollView
,但似乎无法让它工作。)我现在遇到的一个小问题是当frame
向上移动时,你可以模糊地看到背后的黑色。这不是一个大问题,因为我改变了动画时间,黑色背景几乎看不到,但我觉得有更优雅的解决方案。
以下是我移动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
停止的第二行字符一致。
我意识到这似乎不是一个问题,因为它根本不可见,但我不得不加快隐藏键盘的动画,或者frame
拖动后面的黑色背景变得可见。我想知道:有没有办法改变这种颜色?或者是我们无法访问的内容?如果有人能为我想做的事情提出更优雅的方法,我很乐意采取更好的解决方案。提前谢谢。
答案 0 :(得分:0)
您的UIViewController
视图已添加到主UIWindow
。因此,您应该能够通过更改UIWindow
的背景颜色来实现您想要的效果。
在UIApplicationDelegate
:
self.window.backgroundColor = [UIColor whiteColor];
但是,您所做的并不是解决键盘覆盖文本字段问题的最佳方法。您应该使用UIScrollView
或UITableView
来管理此视图,并使用内容插入来向上或向下移动视图。