Xcode/iOS5: Move UIView up, when keyboard appears(Xcode/iOS5:当键盘出现时,向上移动 UIView)
问题描述
我想在显示键盘时向上移动视图.键盘(高度:216)应该用它的高度推高我的视野.这可以通过简单的代码实现吗?
I'd like to move up my view, when the keyboard is shown. The keyboard (height: 216) should push up my view with it's height. Is this possible with a simple code?
推荐答案
要移动视图上,只需改变它的center.首先,将原始的保存在 CGPoint 属性中.
To move the view up, just change its center. First, keep the original one in a CGPoint property.
- (void)viewDidLoad
{
...
self.originalCenter = self.view.center;
...
}
然后,当键盘出现时根据需要进行更改:
Then, change as needed when keyboard shows up:
self.view.center = CGPointMake(self.originalCenter.x, /* new calculated y */);
最后,在键盘隐藏时恢复:
Finally, restore it when keyboard is hidden:
self.view.center = self.originalCenter;
随意添加动画糖
知道键盘何时出现的方法不止一种.
You have more than one way to know when the keyboard appears.
观察 UIKeyboardDidShowNotification 通知.
/* register notification in any of your initWithNibName:bundle:, viewDidLoad, awakeFromNib, etc. */
{
...
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
...
}
- (void)keyboardDidShow:(NSNotification *)note
{
/* move your views here */
}
用 UIKeyboardDidHideNotification 做相反的事情.
-或-
实现 UITextFieldDelegate
在编辑开始/结束时检测以移动视图.
Detect when editing begin/end to move views around.
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
/* keyboard is visible, move views */
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
/* resign first responder, hide keyboard, move views */
}
根据您可能需要跟踪用户正在编辑哪个字段的实际文本字段,添加一个计时器以避免过多地移动视图.
Depending on the actual text fields you may need to track in which field is the user editing, add a timer to avoid moving views too much.
这篇关于Xcode/iOS5:当键盘出现时,向上移动 UIView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Xcode/iOS5:当键盘出现时,向上移动 UIView
基础教程推荐
- NSString intValue 不能用于检索电话号码 2022-01-01
- navigator.geolocation.getCurrentPosition 在 Android 浏览器上 2022-01-01
- 通过重定向链接在 Google Play 中打开应用 2022-01-01
- iOS4 创建后台定时器 2022-01-01
- Android:getLastKnownLocation(LocationManager.NETWORK_PROVIDER 2022-01-01
- libGDX 从精灵或纹理中获取像素颜色 2022-01-01
- iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法 2022-01-01
- AdMob 广告未在模拟器中显示 2022-01-01
- Cocos2d iPhone 非矩形精灵触摸检测 2022-01-01
- 如何从 logcat 中删除旧数据? 2022-01-01
