当用户单击文本字段时将 UITextField 移动到键盘上方
Move UITextField above keyboard when user click on textfield
我想在用户单击 UITextField
时将 UITextField
向上移动到键盘上方。
我对此进行了搜索,一些建议是将整个视图向上移动,一些建议是添加滚动视图。
但是我不想用scrollview
我该怎么做?
这是一个很棒的解决方案:
https://github.com/hackiftekhar/IQKeyboardManager
易于集成且毫不费力。
您不必在每个 UIViewController 中都使用 UIScrollView。
给你的 UITextField
底部常量,当你在 keyboardWillShow
中发现键盘高度时,将你的 UITextField
底部约束增加到 KeyboardHeight
。
只需将下面的代码放在 ViewWillAppear 中即可。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
并将下面的代码放在 ViewWillDisappear 中。
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIKeyboardWillShowNotification
object:nil];
方法
- (void)keyboardWillShow:(NSNotification *)notification
{
// Get the size of the keyboard.
CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
int keyboardHeight = MIN(keyboardSize.height,keyboardSize.width);
textBottom.constant = 0.0f;
for (UIView *vw in commentView.subviews) {
if ([vw isKindOfClass:[UITextField class]]) {
txtComment = (UITextField *)vw;
textBottom.constant = keyboardHeight;
}
}
}
我想在用户单击 UITextField
时将 UITextField
向上移动到键盘上方。
我对此进行了搜索,一些建议是将整个视图向上移动,一些建议是添加滚动视图。
但是我不想用scrollview
我该怎么做?
这是一个很棒的解决方案: https://github.com/hackiftekhar/IQKeyboardManager
易于集成且毫不费力。
您不必在每个 UIViewController 中都使用 UIScrollView。
给你的 UITextField
底部常量,当你在 keyboardWillShow
中发现键盘高度时,将你的 UITextField
底部约束增加到 KeyboardHeight
。
只需将下面的代码放在 ViewWillAppear 中即可。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
并将下面的代码放在 ViewWillDisappear 中。
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIKeyboardWillShowNotification
object:nil];
方法
- (void)keyboardWillShow:(NSNotification *)notification
{
// Get the size of the keyboard.
CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
int keyboardHeight = MIN(keyboardSize.height,keyboardSize.width);
textBottom.constant = 0.0f;
for (UIView *vw in commentView.subviews) {
if ([vw isKindOfClass:[UITextField class]]) {
txtComment = (UITextField *)vw;
textBottom.constant = keyboardHeight;
}
}
}