如何模仿iOS 7上的键盘动画向数字键盘添加“完成”按钮?

2024-04-11

我一直在做类似的事情来模仿旧版本 iOS 上的键盘动画。

CGRect keyboardBeginFrame;
[[note.userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] getValue:&keyboardBeginFrame];
self.doneKeyboardButton.frame = CGRectMake(0, (keyboardBeginFrame.origin.y + keyboardBeginFrame.size.height) - 53, 106, 53);
[[[[UIApplication sharedApplication] windows] lastObject] addSubview:self.doneKeyboardButton];

CGPoint newCenter = CGPointMake(self.doneKeyboardButton.superview.frame.origin.x + self.doneKeyboardButton.frame.size.width/2,
                                self.doneKeyboardButton.superview.frame.size.height - self.doneKeyboardButton.frame.size.height/2);

[UIView animateWithDuration:[[note.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]-.02
                      delay:.0
                    options:[[note.userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]
                 animations:^{
                     self.contentView.frame = CGRectOffset(self.contentView.frame, 0, -TextFieldViewMovement);
                     self.doneKeyboardButton.center = newCenter;
                 }
                 completion:nil];

然而,这在 iOS7 上已经停止工作。返回的值似乎不再完全正确,并且“完成”按钮不再完全模仿键盘显示动画。


在 iOS 7 中,键盘使用了新的、未记录的动画曲线。虽然有些人指出使用未记录的动画选项值是有效的,但我更喜欢使用以下内容:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:[notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]];
[UIView setAnimationCurve:[notification.userInfo[UIKeyboardAnimationCurveUserInfoKey] unsignedIntegerValue]];
[UIView setAnimationBeginsFromCurrentState:YES];

// work

[UIView commitAnimations];

虽然建议使用基于块的动画,但从键盘通知返回的动画曲线是UIViewAnimationCurve,而您需要传递给基于块的动画的选项是UIViewAnimationOptions。使用传统的 UIView 动画方法可以让您直接通过管道输入值。最重要的是,这将使用新的未记录的动画曲线(整数值 7)并使动画与键盘匹配。而且,它在 iOS 6 和 7 上也能正常工作。

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

如何模仿iOS 7上的键盘动画向数字键盘添加“完成”按钮? 的相关文章

  • 如何从 ContentView 外部显示 SwiftUI 警报?

    我正在构建 Swift 应用程序 并试图找出如何显示警报 我有一个单独的 swift 文件正在执行一些计算 并且在某些条件下我希望它向用户显示警报 基本上告诉他们出了问题 然而 我见过的大多数例子都要求警报在ContentView或以其他方
  • `navigator.geolocation.getCurrentPosition()` 在 iOS PWA 上挂起

    我有这个片段 const getCurrentPosition gt new Promise
  • AppStore 提交:错误 ITMS-9000:“无效的捆绑结构 - 不允许二进制文件‘MyApp.app/BuildAgent’

    我陷入了以下错误 我根本不明白 错误 ITMS 9000 无效的捆绑结构 不允许使用二进制文件 MyApp app BuildAgent 您的应用程序可能只包含一个可执行文件 当我使用 Xcode 从 Archive 导出到 IPA 时 我
  • 从 UIPickerView 的选定行设置 UIButton 的标题

    详细场景是这样的 我使用循环创建 10 个按钮并设置 0 9 的标签 点击每个按钮时 我将调用 UIPickerView 在其中加载来自不同数组的数据 到这里我就得到了预期的结果 但我希望 pickerView 中选定的行应设置为相应按钮的
  • 如何制作带有 SWIFT 图像的弹出窗口

    我想知道如何制作类似于此示例的弹出窗口 原始窗口充满了按钮 选择这些按钮后将拉出我想要使用的图像 我会简单地创建一个可重用的UIView组件以及作为子视图所需的一切 例如UIImageView为了你的形象 UILabel or a UIBu
  • 从一个模态视图无缝翻转到另一个模态视图,而不显示纯色背景

    我的 iPad 应用程序的 UI 如下 当我点击Settings按钮 我希望对话框水平翻转以显示设置对话框 我这个工作正常 但是 当对话翻转时会显示背景颜色 如你看到的 有什么办法可以让对话框翻转时不显示该颜色块吗 我希望它看起来更加无缝
  • iOS 中 NSDecimalNumber 的小数分隔符错误

    我尝试通过以下方式输出具有正确的小数分隔符的十进制数的描述 NSString strValue 9 94300 NSDecimalNumber decimalNumber NSDecimalNumber decimalNumberWithS
  • (Kiss)XML xpath 和默认命名空间

    我正在开发一个 iPhone 项目 需要解析一些 xml xml 可能包含也可能不包含默认名称空间 我需要知道如何解析 xml 以防它使用默认命名空间 由于我需要读取和写入 xml 因此我倾向于使用 KissXML 但我愿意接受建议 这是我
  • iOS:生成pdf时绘制文本时如何设置字体?

    我在ios应用程序中使用drawpdf函数生成pdf 同时调用nsobject类中的drawtext函数 它根据我指定的框架和字符串清楚地绘制文本 我的代码是 void drawText NSString textToDraw inFram
  • 为什么 iOS 启动屏幕很慢?

    我的 iOS 应用程序启动屏幕大约需要 3 5 秒 我有一张将在启动屏幕后加载的地图 我的用户必须等待启动屏幕加载 然后再等待 3 秒才能加载地图 有没有办法最大限度地减少启动屏幕时间 基本上这种延迟意味着you在启动过程中做了一些非常错误
  • Objective-C NSString for 循环与characterAtIndex

    我试图逐个字符地循环遍历 NSString 但出现 EXC BAD ACCESS 错误 您知道如何正确执行此操作吗 我已经在谷歌上搜索了几个小时但无法弄清楚 这是我的代码 m self textLength self text length
  • AVAssetExportSession 无法导出从 iCloud 下载的视频

    我正在尝试创建从用户相册中选择的视频的缩小版本 输出的最大尺寸为 720p 因此 在检索视频时 我使用 mediumQualityFormat as the deliveryMode 如果用户设备中不存在原始视频或其中等质量版本 这会导致
  • Cocoa 应用程序菜单栏不可点击

    我正在我的可可应用程序中构建一个菜单栏 其中包含以下代码 implementation我的自定义应用程序CustomApplication void setUpMenuBar CustomApplication sharedApplicat
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • iPhone:UIApplication WillResignActiveNotification 从未被调用

    我正在视图控制器中播放视频 当用户按下硬件主页按钮并且当前正在播放视频时 应用程序崩溃并显示EXC BAD ACCESS在模拟器中 我读到我应该使用applicationWillResignActive停止视频播放的消息应该可以解决崩溃问题
  • 如果我使用自定义 UITableViewCell,是否需要设置 heightForRowAtIndexPath?

    如果我使用自定义 UITableViewCell 是否需要设置 heightForRowAtIndexPath 在我的 NIB 中 我已经设置了单元高度 当我覆盖 heightForRowAtIndexPath 时 单元格的内容不会出现 即
  • 叠加 SKScene 未显示

    我正在尝试将 SKScene 覆盖在 SCNScene 上 当我在模拟器和 iPhone6 上运行我的应用程序时 overlayScene SKScene 按预期显示 但是当我尝试在 iPhone5 上运行它 尝试了 2 个不同的设备 时
  • 模态转场需要点击 2 次而不是 1 次

    我的 UITableView 需要点击 2 次才能显示所选单元格的详细信息页面 一次用于选择 另一次用于显示详细信息视图 我希望有一个 CLI 直接显示所单击单元格的详细视图 我在 UITableViewManager m 中使用此方法的模
  • 是否可以跨 2 个不同的 iOS 应用程序访问数据?

    假设我在 App1 中存储了一些 ID 数据 并希望在同一设备上的 App2 中访问它 平台上可以这样吗 如果没有的话有什么解决方法吗 您可以使用iOS 钥匙扣 http developer apple com library ios do
  • ios - 如何声明静态变量? [复制]

    这个问题在这里已经有答案了 C 中声明的静态变量如下 private const string Host http 80dfgf7c22634nbbfb82339d46 cloudapp net private const string S

随机推荐

  • 来自服务器的 OAuth2“无效授予”响应

    我要求我的客户使用他创建了 google api 项目的授权 gmail 帐户访问此 URL https accounts google com o oauth2 auth scope https www googleapis com au
  • 如何通过 Cron 运行 bash 脚本

    我见过其他类似的问题 但我找不到任何关于如何找出通过 Crontab 运行 Bash 脚本的正确方法的真实信息 这 sh文件位于用户目录中 在我的例子中serverpilot 该脚本正在尝试复制的内容apps文件夹并发送到我的 S3 存储桶
  • Google Play 控制台报告的奇怪堆栈跟踪

    我得到了这样的stacktraces在 Google Play Console 提供的崩溃报告中 at com example ClassA createInstance ClassA java or op1 ClassA java or
  • 哪个本地数据库适合 Windows 8 应用商店应用程序?

    我正在编程一个Windows 8 Store App 地铁设计 与C and XAML using Visual Studio 2012 不需要具有多用户支持等的数据库服务器 我想将数据存储在本地数据库中 但不知道哪个数据库适合我的需求 或
  • R中检查字符串是否包含所有空格

    我想看看字符串是否只包含空格 该字符串可以是 or or etc 我想这样做 这样我就可以将数据框中的值更改为 NA 因为我的目标是修复 清理混乱的数据 谢谢 你可以尝试使用grepl grepl s your string s 要求 0
  • RMarkdown 中子文档之间的链接

    我正在用 R Markdown 写博士论文 我想添加一个子文档 简介 的链接 允许读者跳转到另一个子文档 其中一篇论文 这是我的主要文件 output pdf document latex engine pdflatex r setup i
  • FragmentActivity Junit 测试

    Me used FragmentAndroid 兼容包 使用android support v4 jar 但我无法对此进行 JUnit 测试 My main FragmentActivity类声明如下 public class MyActi
  • 创建简单 RMI 应用程序时出现“ClassCastException:$Proxy0 无法转换”错误

    我正在创建我的第一个非常简单的 RMI 客户端 服务器应用程序 这是代码 接口 I通讯 package itu exercies RMI server import java rmi Remote import java rmi Remot
  • 使用 Visual Studio Code 重构局部变量名称

    我有这个简单的情况 我想重构角色变量的名称 看起来 Visual Studio Code 足够聪明 知道不应触及 URL 中的 角色 我只想在单个文件 单个范围内重构变量的名称 而不是整个文件 绝对不是多个文件 If I use Ctrl
  • Python 函数是否存储为对象? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 此查询继续link https stackoverflow com questions 22604974 python memory mod
  • Httpwebrequest / Httpwebresponse - 重定向计数

    我试图弄清楚在我最终到达最终内容之前我的网络请求被重定向了多少次 我正在创建我的网络请求 如下所示 var httpRequest HttpWebRequest WebRequest Create some arb path httpReq
  • 从 python 脚本返回值到 shell 脚本

    我是Python新手 我正在创建一个返回字符串 hello world 的 Python 脚本 我正在创建一个 shell 脚本 我正在添加从 shell 到 Python 脚本的调用 我需要将参数从 shell 传递到 Python 我需
  • 如何找出该语句实际生成的 SQL?

    我使用 VS2010 NET4 和 EF4 我想看看运行时生成的实际 SQL 另外 写这个声明的最佳方式是什么 这是我的代码 var cklContactItems from a in dbTestCenterViews appvuChec
  • Class.getFields() 返回的字段顺序

    Javadoc 为Class getFields 说 返回的数组中的元素未排序 并且不按任何特定顺序 关于顺序实际上是如何确定的有什么提示吗 当我执行此方法两次时 是否有可能以不同的顺序获取字段 换句话说 对于给定的编译类 甚至在同一源文件
  • 使用条件随机字段进行命名实体识别

    What is 条件随机场 具体如何条件随机场识别结构化或非结构化文本中的人 组织或地点等专有名称 例如 该产品由 StackOverFlow Inc 订购 条件随机场如何将 StackOverFlow Inc 识别为一个组织 CRF 是一
  • 连接中的不透明游标应该在不同的字段参数中保持稳定吗?

    The RANGE ADD突变需要一个edgeName以便它可以将新边插入到客户端连接中 作为其查询的一部分 它还包括cursor 问题是服务器无法知道客户端在生成边缘响应时可能将哪些参数应用于连接 这是否意味着cursor应该稳定 通常
  • 如何使用 Java 加密消息,然后使用 Python 解密消息以实现 AES GCM 算法

    我正在研究使用 Java 加密消息 然后使用基于 AES GCM 算法的 Python 解密消息的问题 基于python doc 通过加密器证明身份验证标签 https cryptography io en latest hazmat pr
  • 如何更改ViewPager的页面?

    我在我的应用程序中使用 ViewPager 并在主 Activity 中定义它 里面onCreate方法我从 SharedPreferences 加载一些页面 然后将其传递给 PagerAdapter Override public int
  • 在 Visual Studio 中获取类的程序集限定名称

    我正在为一些专门的自定义域逻辑编写一个自定义的反射库 该库将使用 XML 配置文件 该文件将在运行时动态解析 System Type 对象 然而 在编写 XML 配置文件时 编写类型有点麻烦 因为它们需要完全限定的程序集名称 以便 Type
  • 如何模仿iOS 7上的键盘动画向数字键盘添加“完成”按钮?

    我一直在做类似的事情来模仿旧版本 iOS 上的键盘动画 CGRect keyboardBeginFrame note userInfo objectForKey UIKeyboardFrameBeginUserInfoKey getValu