iOS 8 UIView 在键盘出现时不向上移动

2024-04-02

我正在开发一个聊天应用程序,其中有UITableView and a UIView含有一个UITextField and a UIButton在里面。我正在使用以下代码来移动UIView当键盘出现时向上。

(void)keyboardWillShow:(NSNotification *)notification
{

    NSDictionary* info = [notification userInfo];
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

    [UIView animateWithDuration:0.2f animations:^{

        CGRect frame = self.inputView.frame;
       UIInterfaceOrientation orientation = self.interfaceOrientation;
    if (orientation == UIInterfaceOrientationLandscapeLeft || orientation ==        UIInterfaceOrientationLandscapeRight)
            frame.origin.y -= kbSize.width;
        else
            frame.origin.y -= kbSize.height;

        self.inputView.frame = frame;
       ;
    }];
}

这段代码在 iOS 7 之前工作正常,但在 iOS 8 中UIView未显示在键盘上方。

谁能建议一下可能出现的问题,或者 iOS 8 中有什么变化吗?


您的代码似乎是正确的,但我更喜欢使用 UIKeyboardDidChangeFrameNotification 或 UIKeyboardWillChangeFrameNotification 因为这些会告诉您当键盘处于视图中时预测文本栏向上或向下时键盘框架的变化。

在你的 ViewDidLoad 中添加这个

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardFrameDidChange:)
                                             name:UIKeyboardDidChangeFrameNotification object:nil];

然后将此方法粘贴到您的 ViewController 中

-(void)keyboardFrameDidChange:(NSNotification*)notification{
    NSDictionary* info = [notification userInfo];

    CGRect kKeyBoardFrame = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
    [yourView setFrame:CGRectMake(0, kKeyBoardFrame.origin.y-yourView.frame.size.height, 320, yourView.frame.size.height)];
}

这将处理您所有的键盘情况,例如向上或向下或使用预测文本栏更改其框架时

当你离开你的视野时,也会删除观察者

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 8 UIView 在键盘出现时不向上移动 的相关文章

  • UIModalPresentationFormSheet 的圆角

    如果这是一个明显的问题 请原谅我 我是个相对较新的人 我有一个模态视图 我设置了自定义尺寸和圆角 void viewWillLayoutSubviews super viewWillLayoutSubviews self view supe
  • 如何在 iOS8 上以编程方式创建一个没有 Storyboard 的 Today 小部件?

    我尝试删除故事板文件和相关的Info plist进入但这次扩展停止工作 它甚至不能从 XCode 启动 The operation couldn t be completed LaunchServicesError error 0 在常规应
  • 文本末尾的空格在右对齐 UITextField 中不可见

    我有一个右对齐的UITextField 最初编辑时 文本末尾不会出现空格 我用这个解决了this https stackoverflow com q 19569688 1971013 替换 与不间断的 u00a0 然而 上面仅在编辑文本字段
  • xdotool 类型需要很长时间并导致整个桌面冻结

    我一直在使用xdotool type过去只能在快捷方式上输入耸肩xdotool type 这可行 但总是需要相当长的时间 并导致整个桌面冻结 完全冻结 而不仅仅是输入 几秒钟 不过并没有太打扰我 现在我需要一种方法来从文件中读取内容 对其进
  • 一个 UITableView 中的两种不同的单元格类型

    大家好 我对如何在一个具有两个部分的 UITableView 中使用两种不同的单元格类型感到非常困惑 第一部分应返回一个大单元格 其中包含大量文本 另一部分应返回三个单元格 以导航到其他视图 我尝试过这样的 UITableViewCell
  • UITableView 自动调整行大小约束在 iPhone 6Plus 上神秘破坏

    我有一个自定义的 UITableViewCell 它有一个缩略图和一堆文本 行高配置为使用自动计算 tableView estimatedRowHeight 129 tableView rowHeight UITableViewAutoma
  • 制作一个固定大小的 UIView,如 UISwitch(使用 IBDesignable)

    当我使用时本指南 http iphonedev tv blog 2014 12 15 create an ibdesignable uiview subclass with code from an xib file in xcode 6要
  • 如何使用 AutoLayout 使 UIView 向上滑动动画?

    this is what I like to achieve 我想执行向上滑动动画 用户可以向上滑动 UIView2 并且 UIView2 将在屏幕上停止一半 我知道如何通过 UIButton 操作以模态方式呈现 UIViewControl
  • 动画导航控制器“后退”按钮

    我在导航控制器层次结构中的视图控制器上有一个自定义按钮 按下该按钮时 会弹出可见的视图控制器 我想使用 UIView 的transform属性来动画关闭视图控制器 它有效 但如果我使用 popViewControllerAnimated Y
  • 如何声明文本字段只能包含整数?

    在 swift 中 我试图创建一个文本字段 该文本字段将允许启用按钮 但仅当文本字段包含整数时 我怎样才能做到这一点 两件事情 指定键盘类型以仅显示数字键盘 所以 设置keyboardType to numberPad 然而 这还不足以阻止
  • 低级键盘钩子不在 UI 线程上

    我想为键盘挂钩创建一个好的库 我使用 SetWindowsHookEx 方法 我注意到如果我的应用程序的主线程繁忙 则应在任何系统 KeyDown 事件中调用的方法 hookProc 不会执行 我认为钩子应该这样制作 以便另一个线程负责它
  • 我无法从 Android 模拟器中删除日语 IME

    我已经多次看到这个问题 但答案总是 从 语言和键盘设置 菜单中取消选中 IME 问题是那里没有复选框 选择菜单 自定义区域设置 en US 菜单 设置 语言和键盘 选择语言 选择 英语 美国 菜单 设置 语言和键盘 日语输入法是唯一的输入法
  • NSRange 到 Range

    我怎样才能转换NSRange to Range
  • UITableViewCell 内的 UIPageViewController

    嘿我想问如何在 UITableViewCell 内实现 UIPageViewController 我一直在阅读周围的内容 但到目前为止似乎对任何尝试的人都不起作用 我希望得到一些提示 不需要完整的答案 谢谢 目前还不清楚你到底想做什么 但让
  • 自定义 UITableViewCellEditControl

    有没有一种简单的方法来定制UITableViewCellEditControl 更具体地说 我想更改图像的加号和减号 到目前为止我发现了什么 http voidrant tumblr com post 27760918492 customi
  • jQuery 键盘事件处理程序按住

    我想为游戏创建一个简单的事件处理程序 这是我的代码 document keydown function e switch e keyCode case 65 left a console log left break case 68 rig
  • Swift 中的 quitFirstResponder

    我怎样才能用Apple的新语言实现它 Objective C 代码 void touchesBegan NSSet touches withEvent UIEvent event for UIView view in self view s
  • 在 Swift 中使用 commitEditingStyle 动态删除 UITable 部分

    我正在处理一个无法解决的问题 我有一个来自客户数据库数组的名称表 每个客户在其他数据成员中都有一个名称属性 我可以成功删除某个部分中的行 但我不能删除该部分 当该部分中的最后一行被删除时 该部分必须消失 I got NSInternalIn
  • 如何获取 UITableView 中的所有单元格

    假设我有一个包含多行的 UITableView 我想在某个时间点将所有 UITableViewCells 作为 NSArray 获取 我努力了 tableView visibleCells 但这种方法有一个问题 我无法拥有当前不在当前屏幕中
  • 在 Firefox 中使用 Javascript 检测键盘布局

    有没有办法在 Firefox 中检测客户端的键盘布局 我知道 Chrome 的答案是肯定的 请参阅https developer mozilla org en US docs Web API Navigator keyboard https

随机推荐

  • 如何使用Abdera Atom客户端发送内容和附件

    我们正在使用Abdera https abdera apache org 与 IBM Connections API 交互 但我们的问题主要与 Abdera 本身有关 我认为 Abdera 中存在一个错误 不允许您在单个请求中发送包含内容和
  • VScode 的扩展,用于查找 Nodejs 应用程序中未使用的公共函数

    我需要 VScode 扩展来查找 Nodejs 应用程序中未使用的公共函数 答案已被接受 如果有人正在寻找更详细的步骤 请阅读以下内容 STEP 1 添加这个ESLint https marketplace visualstudio com
  • 安全地使用 PHP exec 函数

    我正在编写一个 PHP 脚本 旨在通过 exec 函数运行可执行文件 ffmpeg exe 问题是我已经读到使用 exec 函数可能存在安全风险 应该尽可能避免 我一直在研究如何安全地运行 exec 函数 唯一遇到的问题是使用 escape
  • 在docker容器内运行pulseaudio来录制系统音频

    我正在尝试使用 Selenium 设置一个 Docker 容器 该容器使用 ffmpeg 录制带有系统音频的浏览器 我使用 Xvfb 处理视频 不幸的是 在音频方面 这似乎更加棘手 我想我应该在容器内设置一个虚拟的脉冲音频接收器 这将允许我
  • 如何使用 haskell graphViz 绘制图表

    我计划使用 Haskell graphViz 绘制图表 我是 Haskell 的新手 所以这对我来说相当困难 有人可以给我看一个简单的例子吗 实际上我需要一个非常简单的示例 以便我可以理解它并在我正在处理的场景中使用它 我在尝试安装 Cha
  • 自定义调整后的生存曲线中的线型 ggadjustedcurves (survminer, ggplot2)

    我正在尝试绘制调整后的生存曲线 但正在努力按组更改线类型 我可以使用典型的 ggplot2 语言自定义绘图的其他方面 但我在改变线型方面遇到了困难 Example library survival library survminer fit
  • 使用 CSS 突出显示所选行

    我们如何使用 css 突出显示表格中的选定行 有什么办法可以做到这一点吗 假设 选定 的意思是 用鼠标悬停在上面 tr hover background color FF0000 您还可以使用 font weight bold color
  • Javascript API - 通过向用户提供白名单选项来限制域

    我的应用程序提供了一个 API 密钥和 Javascript 代码以放置在其网站上 类似于 google anayytics 代码 API 中的所有调用都使用 JSONP 与我们的服务器进行通信 由于 API 密钥很敏感 我们的用户会回来要
  • 如何转换条形图的 y 轴 (ggplot2)

    样本数据test a b c 1 a x NA 2 b x 5 1e 03 3 c x 2 0e 01 4 d x 6 7e 05 5 e x 5 1e 03 6 f y 6 2e 05 7 g y 1 0e 02 8 h y 2 5e 0
  • 在其他vue组件文件中使用vue组件

    我尝试在其他组件 App vue 中使用vue组件 Global vue 但是有 组件挂载失败 模板或渲染函数未定义 error 全局vue
  • Android O 预览版 findViewById 编译错误

    我尝试测试Android O Developer Preview第二阶段 项目创建后 我只是点击构建并运行 但没有任何成功 Android默认生成的代码如下 Toolbar toolbar Toolbar findViewById R id
  • 与 libbluetooth.so 链接

    在 Ubuntu 14 04 上 我尝试做一个蓝牙设备列表的小示例 但在编译这个简约演示时 我遇到了一个关于与蓝牙共享库链接的简单问题http people csail mit edu albert bluez intro c404 htm
  • 具有边框半径和线性渐变的 CSS 过渡

    鉴于我的 CodePenhttps codepen io scottmgerstl pen MpMeBy https codepen io scottmgerstl pen MpMeBy这是我有问题的图像布局 span class prof
  • 根据事件日志触发powershell

    我有一个用 PowerShell 编写的命令行参数脚本 它接受来自任务计划程序的服务器名称 然而 我的要求是在 SQL 服务器重新启动时执行脚本 因此我已将 PowerShell 脚本附加到事件 17069 但我无法动态传递事件源 在本例中
  • 如何设置 hibernate-mapping 以允许长度超过 255 个字符的字符串?

    所以我试图通过创建一个博客引擎来学习 我正在使用 Hibernate 和 MySQL 这是我的 Post 类的休眠映射
  • JoptionPane 显示确认对话框

    我有一个Java程序 当我运行该程序时 它会给我一个 GUI 如我所附 当我想关闭它时 它会弹出一个确认对话框 如果我按 是 按钮 它将使用以下命令退出程序System exit public static void main String
  • 如何对列表进行排序,其中正值位于负值之前,并且值分别排序?

    我有一个包含正数和负数混合的列表 如下所示 lst 1 2 10 12 4 5 9 2 我想要完成的任务是对列表进行排序 其中正数位于负数之前 也分别排序 期望的输出 1 2 9 10 12 5 4 2 我能够计算出第一部分的排序 其中正数
  • 将具有相同键的节点添加到属性树中

    我正在使用 Boost 的属性树来读取和写入 XML 使用我制作的电子表格应用程序 我想将电子表格的内容保存到 xml 这是一项学校作业 因此我需要使用以下 XML 格式
  • Swift 版本构建配置

    在 Swift v4 2 中 他们引入了扩展Bool toggle 我从早些时候就有了这个扩展 现在当我用 Xcode10 编译时它说Ambiguous use of toggle 如果 Swift 版本是 4 2 或更高版本 我试图让它忽
  • iOS 8 UIView 在键盘出现时不向上移动

    我正在开发一个聊天应用程序 其中有UITableView and a UIView含有一个UITextField and a UIButton在里面 我正在使用以下代码来移动UIView当键盘出现时向上 void keyboardWillS