2015-06-15 26 views
0

我有我的UIView里面有两个UIViews。这是我的看法: enter image description hereiOS在键盘之前提起UIView?

在专注于文本字段上,显示键盘和键盘隐藏我的文本字段。我想在键盘之前移动整个TextField View。我发现的代码示例在这里计算器: iPhone Keyboard Covers UITextField

这是代码:

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    [self animateTextField: textField up: YES]; 
} 


- (void)textFieldDidEndEditing:(UITextField *)textField 
{ 
    [self animateTextField: textField up: NO]; 
} 

- (void) animateTextField: (UITextField*) textField up: (BOOL) up 
{ 
    const int movementDistance = 80; // tweak as needed 
    const float movementDuration = 0.3f; // tweak as needed 

    int movement = (up ? -movementDistance : movementDistance); 

    [UIView beginAnimations: @"anim" context: nil]; 
    [UIView setAnimationBeginsFromCurrentState: YES]; 
    [UIView setAnimationDuration: movementDuration]; 
    self.view.frame = CGRectOffset(self.view.frame, 0, movement); 
    [UIView commitAnimations]; 
} 

我想实现这个,但我有它的麻烦。有人可以解释如何正确地做到这一点?

+1

有一堆关于SOF上的这个问题的问题,请问之前谷歌它,这里是第一个结果http://stackoverflow.com/questions/6435670/keyboard-hides-uitextfield-how-to-solve-这 –

+0

可能重复[如何使UITextField在键盘存在时向上移动](http://stackoverflow.com/questions/1126726/how-to-make-a-uitextfield-move-up-when-keyboard-is -当下) –

回答

1

而不是手动执行此操作。使用TPKeyboardAvoidingScrollView。 它易于使用。

首先把UIScrollView并把你的所有视图放在里面。

要与UITableViewController类一起使用,请将TPKeyboardAvoidingTableView.m和TPKeyboardAvoidingTableView.h放入您的项目中,并使您的UITableView成为xib中的TPKeyboardAvoidingTableView。如果你没有在你的控制器上使用xib,我知道没有简单的方法将它的UITableView作为一个自定义类:阻力最小的路径是为它创建一个xib。

对于非UITableViewControllers,将TPKeyboardAvoidingScrollView.m和TPKeyboardAvoidingScrollView.h源文件拖放到您的项目中,将UIScrollView弹出到您的视图控制器的xib中,将滚动视图的类设置为TPKeyboardAvoidingScrollView,并将所有控件放入该滚动视图中。您也可以使用编程方式创建它,而不使用xib - 只需使用TPKeyboardAvoidingScrollView作为顶层视图。

0

你可以使用这样的手动写:

​​

而且你认为合适的玩的kKeyboardOffset。 从textFieldDidBeginEditing调用它。 完成编辑后,只需在kKeyboardOffset前加一个+号即可调用相同的函数。