我知道他可能是重复的,但根据我的情况,我有具体的问题。
我必须在显示currently edited field
时隐藏键盘(有时隐藏在键盘后面)。我用过自定义代码。在选择下一个文本字段或将scroll view
作为容器时,它无法正常工作。我按照Apple的建议改变了我的代码(参见link)。
我UIViewController
(VC
)嵌入了UIScrollView
。我的UITextFields
位于scroll view
内。我在header label
中有VC
。
我的问题是:
1.键盘的建议元素隐藏已编辑的字段。我通过添加height
的{{1}}来解决此问题。
header label
的顶部或底部时,我会离开大scroll view
。是否可以计算empty space
而不显示offset
?修改 我正在使用的代码如下:
empty space
答案 0 :(得分:0)
我这样做没有滚动视图
- (void)keyboardWillShow:(NSNotification*)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
NSTimeInterval duration = [[info objectForKey: (UIKeyboardAnimationDurationUserInfoKey)] doubleValue];
CGFloat keyboardTop = [[UIScreen mainScreen] bounds].size.height - kbSize.
CGRect activeFieldFrameClone = activeField.frame;
CGFloat activeFieldBottom = activeField.frame.origin.y + activeField.frame.size.height;
if (activeFieldBottom > keyboardTop)
activeFieldFrameClone.origin.y -= activeFieldBottom - keyboardTop + 30;
// 30 is Just some offset valur
[UIView animateWithDuration:duration animations:^{
activeField.frame = activeFieldFrameClone;
}];
}
基本上,通过检查字段底部是否显示低于键盘顶部来检查键盘是否隐藏活动字段。如果是这样,请将该字段向上移动。
在- (void)keyboardWillBeHidden:(NSNotification*)aNotification
上我会将它向下移动它所提升的价值。要做到这一点,可以设置一个全局变量来保存字段的原始帧,然后将其设置为字段new frame。
也许注册keyboardWillShow
而不是
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification object:nil];