• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 键盘显示时self.view设置框架不起作用

[复制链接]
菜鸟教程小白 发表于 2022-12-12 19:20:26 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我遇到了一个问题——当键盘显示时,我的代码将设置 View Controller 的 View 框架大小,因此通过约束设置,所有组件都将位于正确的位置。然而,有时它会像左图一样工作,但如果我从某些特定点进入这个 View Controller ,它看起来就像右图。

enter image description here

这是我检测到键盘出现时的代码..

- (void)moveTextViewForKeyboardNSNotification*)aNotification
                         upBOOL)up {

NSDictionary* userInfo = [aNotification userInfo];
NSTimeInterval animationDuration;
UIViewAnimationCurve animationCurve;
CGRect keyboardEndFrame;

[[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve];
[[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration];
[[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:animationDuration];
[UIView setAnimationCurve:animationCurve];

CGRect keyboardFrame = [self.view convertRect:keyboardEndFrame toView:nil];

CGRect viewFrame = self.view.frame;
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenHeight = screenRect.size.height;

if (up) {
    viewFrame.size.height = screenHeight - (keyboardFrame.size.height) - viewFrame.origin.y;
} else {
    viewFrame.size.height = screenHeight;
}

[self.view setFrame:viewFrame];

[UIView commitAnimations];

}

我已经在这里搜索了几天...仍然没有运气有专家可以提供帮助吗?提前谢谢。



Best Answer-推荐答案


如果您使用自动布局,则不应手动设置框架,因为它可能不会更改界面或可能会弄乱您的 UI。
创建对一个或多个约束的引用,更改它们的 constant 属性以适应键盘更改,然后使用 setNeedsLayout-layoutIfNeeded

要求自动布局更新布局

关于ios - 键盘显示时self.view设置框架不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36491093/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap