我面临一个奇怪的问题。
我有三个UITextField,当键盘与屏幕重叠时,我正在使用代码向上移动屏幕:
- (void)textFieldDidBeginEditing:(UITextField *)textField {
if(self.view.frame.size.height==568 && textField==txtVerifyPassword)
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:0.5];
[UIView setAnimationBeginsFromCurrentState:YES];
self.view.center = CGPointMake(originalCenter.x,originalCenter.y-100);
}
else if(self.view.frame.size.height==568 && textField==txtPassword)
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:0.5];
[UIView setAnimationBeginsFromCurrentState:YES];
self.view.center = CGPointMake(originalCenter.x,originalCenter.y-20);
}
}
我正在使用:
移至原始位置- (void)textFieldDidEndEditing:(UITextField *)textField{
self.view.center = CGPointMake(originalCenter.x,originalCenter.y);
}
DidLoad的原创中心:
- (void)viewDidLoad {
[super viewDidLoad];
originalCenter = self.view.center;
// Do any additional setup after loading the view.
}
我正在以这样的方式添加导航栏:
[self.navigationController setNavigationBarHidden:NO];
self.navigationItem.title = @"Demo";
UIColor *bg = [UIColor colorWithRed:9/255.0f green:161/255.0f blue:12/255.0f alpha:1.0f];
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
// iOS 6.1 or earlier
self.navigationController.navigationBar.tintColor = bg;
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};
} else {
// iOS 7.0 or later
self.navigationController.navigationBar.barTintColor = bg;
self.navigationController.navigationBar.translucent = NO;
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};
}
当我删除导航时,每件事情都很有效。
但是当我添加它时,我遇到了两个问题:
答案 0 :(得分:2)
只需使用TPKeyboardAvoidingScrollView就可以了。它简单易用。你可以很容易地实现你想要实现的目标。
用法:
与UITableViewController
课程同时使用,将TPKeyboardAvoidingTableView.m
和TPKeyboardAvoidingTableView.h
放入您的项目中,然后将UITableView
设为TPKeyboardAvoidingTableView
在xib中。
如果您没有在控制器上使用xib,我知道没有简单的方法可以使UITableView
成为自定义类:阻力最小的路径是为它创建一个xib。
对于非 - UITableViewControllers
,将TPKeyboardAvoidingScrollView.m
和TPKeyboardAvoidingScrollView.h
源文件放入项目中,将UIScrollView
弹出到视图控制器的xib中,将滚动视图的类设置为TPKeyboardAvoidingScrollView
,并将所有控件放在该滚动视图中。
您也可以不使用xib以编程方式创建它 - 只需使用TPKeyboardAvoidingScrollView
作为顶级视图。