我刚开始学习编程iPhone应用程序,我似乎无法弄清楚在键盘出现时如何让视图滑出来(所以你仍然可以看到你输入的文本字段)。它是如何完成的?使视图向上滑动,为键盘腾出空间?
回答
如果视觉上没问题,最简单的方法是移动整个self.view.frame,然后在完成后将其移回原位。
static const CGFloat KEYBOARD_ANIMATION_DURATION = 0.3f;
- (void) animateForToNewYPosition:(int)newYPosition {
// move for kdb
if (self.view.frame.origin.y == newYPosition) {
return;
}
// start animation
CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
// move it
self.view.frame.origin.y = newYPosition;
[UIView commitAnimations];
}
谢谢,正是我需要的! – Ryan 2011-05-06 00:50:46
如何给这个方法打电话? – kendotwill 2015-01-22 03:59:11
使用UITextField委托,你可以把调用animateForToNewYPosition:在委托方法textFieldDidBeginEditing:一个很好的例子/答案在这里:http://stackoverflow.com/a/17887070/203960 – dredful 2015-01-22 05:09:20
这样做的一种方法是在UIScrollView中包含所有内容,然后向上滚动内容。另一种方法是自己移动视图,通常在Core Animation的帮助下,使其看起来不错。
一个很好的起点是文档。甚至还有一个标有Moving Content That Is Located Under the Keyboard的标签,它会指引您正确的方向。
假设你需要移动起来视图上的文本字段,标签是4(当你有超过1个TXT领域,并通过键盘覆盖其中的一个),然后使用文本框的委托方法
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
if(textField.tag==4)
CGRect viewFrame;
viewFrame=self.view.frame;
if(viewFrame.origin.y==-100)
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.3];
viewFrame.origin.y+=100;
self.view.frame=viewFrame;
[UIView commitAnimations];
}
}
这会移动您的视图。现在向下移动,你需要在文本框代码anothe委托方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
if(textField.tag==4)
{
CGRect viewFrame;
viewFrame=self.view.frame;
if(viewFrame.origin.y==-100)
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.3];
viewFrame.origin.y+=100;
self.view.frame=viewFrame;
[UIView commitAnimations];
}
}
}
在TextView的情况下,你需要一个按钮,移动你的观点,你需要这个代表
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
,并使用相同的代码textField
向下移动需要在导航栏中添加一个按钮,或者在工具栏中添加按钮,并通过相同的动画在键盘上设置该工具栏。对于按钮,您需要使用相同的代码向下移动,这适用于textField。
希望这有助于你。
http://objectivecwithsuraj.blogspot.in/2012/06/making-view-slide-up-to-make-room-for.html
Add a UIScrollview - scrollview to your UIView and set delegates for UITextFields &
UIScrollview
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (textField == txtFieldName)
{
[txtFieldCellNo becomeFirstResponder];
}
else if (textField == txtFieldCellNo)
{
[txtFieldEmail becomeFirstResponder];
}
else
{
[textField resignFirstResponder];
}
return YES;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[self animateTextField:txtFieldName up:YES];
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[self animateTextField:txtFieldEmail up:NO];
}
- (void) animateTextField: (UITextField*) textField up: (BOOL) up
{
const int movementDistance = 80;
const float movementDuration = 0.3f;
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];
}
我发现,使用键盘工作的通知我的应用程序比使用textFieldDidBeginEditing和textFieldDidEndEditing的的UITextField委托协议更好。通知是keyboardWillShow和keyboardWillHide。可以测试UITextField或UITextView,这需要视图随这些通知一起移动,然后有条件地移动视图。我的应用程序的优点是我有很多UITextTields,通知可以让编辑从一个字段移动到另一个字段时,更容易将视图保留在键盘上方。
- 1. 颤动:向上移动对话框为软键盘腾出空间?
- 2. 使用UIScrollView滑动并使用键盘向上移动视图
- 3. IPhones-让键盘滑出视图
- 4. Android TabBar - 随着键盘向上滑动
- 5. UIKeyboardWillShowNotification向上滑动键盘时显示
- 6. 如何在键盘出现时向上滚动视图?
- 7. 是否可以使Android视图中的元素顺利移动以便为新视图腾出空间?
- 8. 如何向下滑动一个键盘向上滑动自定义一个
- 9. 键盘出现时向上移动UITextField
- 10. 向下滑动隐藏安卓键盘
- 11. 保持键盘上方的视图 - 当出现键盘时
- 12. 如何使用VirtualAllocEx为代码洞穴腾出空间?
- 13. 当用户在滚动视图内滑动时关闭键盘
- 14. 键盘在textfields的方式如何向上移动视图
- 15. iPhone在键盘打开时向上滚动视图
- 16. Swift:当键盘显示时向上滚动视图
- 17. xamarin表格:根据键盘高度向上移动视图
- 18. 的Android滑出动画,剩余空间被其它视图
- 19. 为什么在显示键盘时视图向下移动?
- 20. 使TextField的UIToolbar向上移动键盘
- 21. 键盘从纵向切换到横向视图在键盘关闭后保持向上移动
- 22. setNavigationBarHidden使整个视图向上/向下滑动
- 23. 离子形式不向上滑动时,键盘重叠输入
- 24. 当键盘出现时,用输入文字向上滑动固定页脚
- 25. RecyclerView v23.2.0和向上滑动后的空白空间
- 26. 使用swift时,textfield在键盘出现时向上移动
- 27. 如何滚动元素以腾出空间来展开元素
- 28. 向上移动一个视图,使textfield不会消失在键盘后面
- 29. 键盘方向键导航与CBP图像滑块
- 30. 滑入和滑出动画像键盘在cocos2d
Michael Tyson已经编写了一个自动化的组件:[用于移动文本字段的一种通用解决方案,不受键盘影响](http://atastypixel.com/blog/a-drop-in-universal - 溶液换移动文本字段,遥遥的最键盘/)。 – 2011-05-05 03:27:47
该链接真的很好!谢谢! – BlackHatSamurai 2013-05-21 03:33:52