我有UITextFields列表。
我想在输入输入后逐个移动到下一个文本字段。
因为键盘隐藏了字段......
你们有人告诉我,我怎么能做到这一点......
非常感谢您的时间。
答案 0 :(得分:2)
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
CGRect rect = self.view.frame;
if (movedUp)
{
if(rect.origin.y == 0){
rect.origin.y -= 85.0;
rect.size.height += 85.0;
}
}
else
{
if(rect.origin.y != 0.0){
rect.origin.y += 85.0;
rect.size.height -= 85.0;
}
}
self.view.frame = rect;
[UIView commitAnimations];
}
基本上,当您开始编辑textfiled&时,可以使用BOOL YES调用此方法。当您结束编辑时,使用BOOL no。 您只需要根据您可以调整的移位来跟踪正在编辑的文本字段(例如,此处为85)
答案 1 :(得分:1)
另一种方法可能是使用UITableView。然后大多数控件都准备好了。但你也可以自己完成这一切。
首先将您的UITextfields放在单独的UIView上。让UIView成为一个出口,正确地链接它。这样,您可以使用动画轻松移动文本字段。
然后在委托方法中执行类似的操作:
// Sets the label of the keyboard's return key to 'Done' when the insertion
// point moves to the table view's last field.
//
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
if ([textField tag] == myLastUITextField)
{
[textField setReturnKeyType:UIReturnKeyDone];
}
return YES;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
if ([textField returnKeyType] != UIReturnKeyDone)
{
// If this is not the last field (in which case the keyboard's
// return key label will currently be 'Next' rather than 'Done'),
// just move the insertion point to the next field.
//
NSInteger nextTag = [textField tag] + 1;
UIView *nextTextField = [myTextView viewWithTag:nextTag];
// here starts your animation code
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
CGRect rect = textFieldView.frame;
rect.origin.y = -44;
textFieldView.frame = rect;
[UIView commitAnimations];
// here ends your animation code. Play with it
[nextTextField becomeFirstResponder];
}
else
{
// do what you want to do with the last UITextfield
}
return YES;
}
`
我认为它不会立即通过复制粘贴工作,但我希望它指向一个方向。祝你好运