如何模仿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上的键盘动画向数字键盘添加“完成”按钮? 的相关文章

  • Xcode 7 UI 测试:如何在代码中消除一系列系统警报

    我正在使用新的 Xcode 7 UI 测试功能编写 UI 测试用例 在我的应用程序的某个时刻 我会请求用户允许相机访问和推送通知 所以会出现两个 iOS 弹出窗口 MyApp Would Like to Access the Camera
  • 自定义 UIImageView 不是自定义 UITableViewCell 内的圆圈

    我在代码中完成了自定义 UITableViewCell 但我在使用内部带有 SfSymbol 的圆形 UIImageView 时遇到了麻烦 有时它运行良好 正如您在屏幕截图中看到的那样 但有时它的形状有些奇怪 如果我不设置任何 SfSymb
  • 您希望 2 年前就知道哪些 Cocoa/Core Foundation 辅助函数?

    我刚刚在 NSGeometry h 中发现了 NSRect 辅助函数 即 NSMidX NSMaxX 等 这些将使一些重复编码变得更加容易 我了解 NSMakeRect NSMouseInRect NSOffsetRect 和许多其他函数
  • 将 NSString 中的“”字符替换为“\”(以创建 Unix 路径)

    使用以下内容不起作用 NSString stringByReplacingOccurrencesOfString NSString target withString NSString replacement 我所说的 不起作用 是指不做任
  • SwiftUI如何用TabView隐藏导航栏

    我正在使用 SwiftUITabView inside NavigationView 但我就是无法在iOS 13 0模拟器中隐藏导航栏 这是代码 import SwiftUI struct TestView View var body so
  • CKAsset 不会显示在表格视图图像中

    我在 cloudkit DB 中有一个可选图像 已检查数据库 并且在我在测试中添加它的情况下该图像就在那里 我创建了一个类 它将记录字段初始化为我在表视图中使用的变量 我也有一个定制单元 但图像不会显示在我的自定义表格视图单元格中 我不知道
  • ios7 中的自动续订订阅

    我知道这个问题已经被问过很多次了 但没有一个问题对我有帮助 而且我不确定这些答案中哪些在 iOS 7 中仍然有效 我正在做一些带有自动续订订阅的应用程序 我已经成功创建了我的产品 我可以与测试用户一起购买它 我的问题是 检查特定用户是否仍然
  • 为什么 EXC_BAD_ACCESS 如此无用?

    首先我要说的是 我有 Flash AS3 的背景 我意识到 Flash AS3 对大多数事情的要求并不像 iPhone Objective C 那样严格 我怀疑我的问题实际上也适用于 AS3 但让我问它与 Obj c 有关 为什么错误 EX
  • Canvas 动画在 FireFox 中卡顿,但在 Chrome 中完美

    我最近开始做一些 HTML5 Canvas 的东西 并且很高兴地开展我的业务 在 Chrome 中测试东西 直到我决定尝试我在 Firefox 中所做的事情 效果不太好 这是我正在做的事情的一个简单的例子 设置基本的 requestAnim
  • 模拟器在 AQMEIOManager 上崩溃

    尝试播放音频时模拟器崩溃 13 22 14 211 App 2965 5603 lt 0xb03e7000 gt Error obj trying to fetch default input device s sample rate 13
  • 快速查看生成器 iOS

    有没有办法扩展 iOS 上的快速查找框架来处理未知的文件类型 就像在 Mac 上一样 我不想切换到我的应用程序来预览文件 就像在电子邮件或 iMessage 中查看图像文件一样 我想删除必须选择使用哪个应用程序来打开文件的步骤 在 Mac
  • Qt - 如何在 QGraphicsPixmapItem 中显示 gif(动画)图像

    我正在尝试在 QGraphicsPixmapItem 中使用一张闪烁的图像 显示的图像没有动画效果 下面是原始图像 下面是在 QGraphicsPixmapItem 中使用此图像的 QGraphicsScene 有人能说一下如何实现这一目标
  • Xcode 8:因特性而异,改变所有尺寸类别的布局

    我正在尝试使用 xcode 8 2 1 上的 very for Traits 功能 但是当我使用 Vary for Traits 更改一个尺寸类的布局 然后在完成后 完成变化 时 它实际上正在更改每个尺寸的布局我的故事板中的课程 例如我尝试
  • 谷歌地图转弯 GPS 导航用于 ios 开发

    我的应用程序需要包含逐段 GPS 导航 任何人都可以告诉如何集成谷歌地图进行逐段 GPS 导航 我可以在android开发中找到它 但我无法从谷歌地图的iOS开发文档中找到导航 https developers google com map
  • 椭圆绘制WPF动画

    我正在开发一个矩形区域的控件 当触发发生时 将在矩形区域中绘制一个椭圆形 该控件将能够承载其他控件 例如文本框 按钮等 因此在触发时将在它们周围绘制圆圈 我希望将圆圈绘制为动画 就像您用笔圈出内部控件一样 实现这一目标的最佳方法是什么 我一
  • 检查 UIImage 是否有 alpha(透明)颜色时出现问题

    我正在检查图像是否有透明区域 alpha 受到打击 我必须改变颜色UIImage 我已经实现了以下方法来检查图像是否有alpha or not BOOL checkAlpha UIImage image for int x 0 x lt i
  • UICollectionViewCell - 内容不会与单元格的 contentView 一起动画

    问题看起来像这样 http i imgur com 5iaAiGQ mp4 https i imgur com 5iaAiGQ mp4 红色是cell contentView的颜色 这是代码 https github com nezhybo
  • iOS 信号处理程序可以轻松收集哪些原因信息?

    我正在尝试向应用程序添加一些崩溃日志记录 并且我有一个signal设置处理程序以捕获标准 致命 信号 我可以在信号处理程序中实际 简单地收集哪些 原因 信息 如果有 以进行记录 我花了大约 2 小时谷歌搜索内容 但我找到的大部分内容都是针对
  • 使用 NSTimer 传递原始参数的正确方法

    我正在使用一个调用此方法的基本计时器 void refresh id obj if obj YES doSomething 我想从代码的某些区域以及计时器调用此方法 NSTimer scheduledTimerWithTimeInterva
  • 如何在 XAML 中自动调整列表视图的高度

    我的列表视图对象接收图像 ID 号和概要 概要的大小各不相同 因为有些有空格返回 我注意到 ListView 有一个可以设置的行高 我现在设置为 250 但它只能是一个固定值 那么会发生什么 我的网格对于 ListView 来说变得太大 导

随机推荐

  • 来自服务器的 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