gpt4 book ai didi

iOS 8 UIView 没有得到更新的问题

转载 作者:行者123 更新时间:2023-11-29 02:36:03 27 4
gpt4 key购买 nike

我有一个带有 UITextField 的 UIView 位于屏幕底部,我想在出现键盘时将其向上移动。我添加了 keyboardFrameDidChange 观察器,以便在键盘出现/消失时得到通知。这是方法:

-(void)keyboardFrameDidChange:(NSNotification*)notification{

NSDictionary* info = [notification userInfo];

CGRect kKeyBoardFrame = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];

[bottomView layoutIfNeeded];

[UIView animateWithDuration:[notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue] delay:0 options:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] integerValue] animations:^{

[bottomView setFrame:CGRectMake(0, kKeyBoardFrame.origin.y - bottomView.frame.size.height, 320, bottomView.frame.size.height)];

} completion:^(BOOL finished) {

[bottomView layoutIfNeeded];

NSLog(@"frame ** %f",self.bottomView.frame.origin.y);
}];
}

此处 bottomView 的框架 发生了变化,但 UI 中没有任何反应。 bottomView 只保留在底部。可能是什么原因?

最佳答案

这听起来像是一个自动布局问题。如果自动布局打开,那么您应该通过调整其约束来更改 View 的位置,而不是设置框架。为文本字段和 super View 底部(在我的示例中为bottomCon)之间的约束创建一个IBOutlet,并对其进行调整。

-(void)keyboardFrameDidChange:(NSNotification*)notification{

NSDictionary* info = [notification userInfo];

CGRect kKeyBoardFrame = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];

[_bottomView layoutIfNeeded];

[UIView animateWithDuration:[notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue] delay:0 options:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] integerValue] animations:^{

self.bottomCon.constant = kKeyBoardFrame.origin.y;
[_bottomView layoutIfNeeded];
} completion:^(BOOL finished) {
NSLog(@"frame ** %f",self.bottomView.frame.origin.y);
}];
}

关于iOS 8 UIView 没有得到更新的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26346614/

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