gpt4 book ai didi

ios - 使用 uiTextfield 的许多 subview 键盘上下移动

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:32:04 30 4
gpt4 key购买 nike

我需要上下移动键盘。我有许多带有许多 uiTextfields 的 subview 。这些 subview 有一个 super View ,这个 super View 在 ScrollView 中。

我无法使用以下代码向上移动 View :

- (void) keyboardWasShown:(NSNotification *)notification{
NSDictionary *info = [notification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey]CGRectValue].size;
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0);
self.Scroll_view.contentInset = contentInsets;
self.Scroll_view.scrollIndicatorInsets = contentInsets;
}

- (void) keyboardWillBeHidden:(NSNotification *)notification{
UIEdgeInsets contentInsets = UIEdgeInsetsZero;
self.Scroll_view.contentInset = contentInsets;
self.Scroll_view.scrollIndicatorInsets = contentInsets;
}

当我将所有 UITextfield 放入 ScrollView(不放入 subview )时,此代码工作正常,但我需要处理 subview 并上下移动键盘。如何在按下键盘 Next/Return 键的同时上下移动键盘?

最佳答案

试试这个:

- (void)animateViewUpToTargetYOrigin:(CGFloat)yValue
{

[[NSNotificationCenter defaultCenter] addObserverForName:UIKeyboardDidChangeFrameNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {
CGFloat yOrigin = 0;
CGFloat keyboardYOrigin = [[[note userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].origin.y;
if (yValue > keyboardYOrigin) {
yOrigin = yValue - keyboardYOrigin;
}
[UIView animateWithDuration:0.3f animations:^{

self.view.frame = CGRectMake(self.frame.origin.x, -yOrigin, self.frame.size.width, self.frame.size.height);


}];


}];

使用这段代码你只需要在textfield dibeginediting中调用这个方法,并在其中传递yOrigin(textfield)+height(textField)作为y值。如果您的 textFields 在 Scrollview 或任何 subview 中,请在发送 Y 值之前转换它们相对于 self.view 的帧值。

例如:

CGRect textFieldRectWithRespectToSelfView = [textField.superview convertRect:textField.frame toView:self.view];
[self.view animateViewUpToTargetYOrigin: textFieldRectWithRespectToSelfView.orgin.y + textFieldRectWithRespectToSelfView.size.height];

当您调用 [textField resignFirstResponder] 时,self.view 会回到其原始位置。发生这种情况是因为 UIKeyboardDidChangeFrameNotification 始终监听键盘框架变化。

我在github上有一个demo项目作为示例请引用:

https://github.com/subhajitregor/ViewMoveUpExample

关于ios - 使用 uiTextfield 的许多 subview 键盘上下移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40766001/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com