- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
根据 Apple 文档:
It’s your responsibility to ensure the system calls this method conditionally, depending on whether or not one of your app launch methods (application:willFinishLaunchingWithOptions: or application:didFinishLaunchingWithOptions:) has already handled a quick action invocation. The system calls a launch method (before calling this method) when a user selects a quick action for your app and your app launches instead of activating. The requested quick action might employ code paths different than those used otherwise when your app launches. For example, say your app normally launches to display view A, but your app was launched in response to a quick action that needs view B. To handle such cases, check, on launch, whether your app is being launched via a quick action. Perform this check in your application:willFinishLaunchingWithOptions: or application:didFinishLaunchingWithOptions: method by checking for the UIApplicationLaunchOptionsShortcutItemKey launch option key. The UIApplicationShortcutItem object is available as the value of the launch option key.
但是为什么需要在 didfinishlauncing/willfinishLauncing 方法中处理这个。如果应用处于kill状态,最终它会调用performActionForShortcutItem方法,那么为什么需要检查didfinish方法呢?
示例代码:
//code
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
var launchedFromShortCut = false
//Check for ShortCutItem
if let shortcutItem = launchOptions?[UIApplicationLaunchOptionsShortcutItemKey] as? UIApplicationShortcutItem {
launchedFromShortCut = true
handleShortCutItem(shortcutItem)
}
//Return false incase application was lanched from shorcut to prevent
//application(_:performActionForShortcutItem:completionHandler:) from being called
return !launchedFromShortCut
}
func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: Bool -> Void) {
let handledShortCutItem = handleShortCutItem(shortcutItem)
completionHandler(handledShortCutItem)
}
func handleShortCutItem(shortcutItem: UIApplicationShortcutItem) -> Bool {
var handled = false
//Get type string from shortcutItem
if let shortcutType = ShortcutType.init(rawValue: shortcutItem.type) {
//Get root navigation viewcontroller and its first controller
let rootNavigationViewController = window!.rootViewController as? UINavigationController
let rootViewController = rootNavigationViewController?.viewControllers.first as UIViewController?
//Pop to root view controller so that approperiete segue can be performed
rootNavigationViewController?.popToRootViewControllerAnimated(false)
switch shortcutType {
case .Torquiose:
rootViewController?.performSegueWithIdentifier(toTurquoiseSeque, sender: nil)
handled = true
case.Red:
rootViewController?.performSegueWithIdentifier(toRedSeque, sender: nil)
handled = true
}
}
return handled
}
}
最佳答案
它为您提供了决定的灵 active - 您可以在 didFinishLaunching 中“尽早”处理它 - 返回 FALSE 将禁止稍后调用 performActionForShortcutItem。或者您可以在 didFinishLaunching 中返回 TRUE,并且 performActionForShortcutItem 仍将被调用。
关于ios - didFinishLaunching 中的 UIApplicationShortcutItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35083367/
我正在尝试为我的应用程序设置快速操作。我可以静态或动态地创建它们。 我们可以动态更改语言,快速操作应与应用程序中设置的语言相匹配。通过动态快速操作,一切都很简单。 我想做的是在应用程序首次启动之前提供
我正在为一个应用程序构建 Today Extension,它非常适合修改我的应用程序数据。但是现在我的动态 UIApplicationShortcutItems 不同步。 我无法从我的扩展访问 UIA
当用户通过 3d 触摸点击主屏幕菜单 UIApplicationShortcutItem 时,iOS 的默认行为是将您的应用程序置于前台。有什么方法可以处理 UIApplicationShortcut
在 iPhone 6s 中,Apple 推出了一项名为“3D Touch”的新功能。应用程序开发人员可以通过在他们的应用程序中使用这项技术来使用这项技术,或者在主屏幕上提供所谓的 UIApplicat
我有一个应用程序,我想混合添加静态和动态应用程序快捷方式项。动态项目的本地化非常简单,使用 NSLocalizedString,但对于 info.plist 中的项目则不是那么多。我已经有一个用于本地
我在 AppDelegate 中试过: let item1 = UIApplicationShortcutItem(type: "Item", localizedTitle: "Item") let
如何控制这个?我已尝试更改 plist 中的位置。 最佳答案 对不起。我已经解决了这个问题。我发现如果你的应用程序在屏幕右边,左边的图标如果您的应用程序在左侧,则图标在右侧。开发者无法控制。 关于io
根据 Apple 文档: It’s your responsibility to ensure the system calls this method conditionally, dependin
我想将新的 3D/Force Touch 功能 (UIApplicationShortcutItem) 添加到我的应用程序,但我想知道是否有或没有限制您可以在单个应用程序上拥有多少? 我查看了文档,但
我正在为我的 iOS 9 应用快速实现一些 3D 触摸快速操作,但我遇到了一个奇怪的问题。当我的应用程序在后台并且我以快速操作启动时,一切都按计划进行。当我的应用程序完全死机时(即我从多任务菜单中将其
如何为 UIApplicationShortcutItem 添加自定义图像作为 UIApplicationShortcutIcon?这与最近的照片/消息应用程序中的照片 UIApplicationSh
我正在设置一些 3D Touch 功能,并想使用从网络下载的图像(可以通过 SDWebImage 的缓存访问)作为 中的音频封面图像code>UIApplicationShortcutItem,就像苹
我正在寻找动态 UIApplicationShortCutItem 的一些 Obj-C 示例代码。 基本上,我有三个静态 UIApplicationShortcutItems,我只想在特定条件下显示它
指定主屏幕快速操作时,UIApplicationShortcutItems ,在您的 Info.plist 中,有没有办法使用 SF Symbols 中的系统镜像? docs noting the a
我正在尝试将我的代码迁移到 Swift 3,但遇到了有关尝试处理 3D Touch 快捷方式的错误。 我得到以下错误 Performing segue using 3D Touch Shortcut
在我的应用程序中,启动的第一个 View 由 RootUIViewController 控制。现在用户可以点击此 View 上的任何按钮,然后 segue 到由 LeafUIViewControlle
我目前正在使用 3D Touch 为我的 iOS 9 应用实现主屏幕快速操作。我使用已定义的 UIApplicationShortcutIconType 枚举中的现有系统图标执行多项操作。 一个例子:
Swift 3 转换器更改了这一行(功能完美): func application(application: UIApplication, performActionForShortcutItem s
我是一名优秀的程序员,十分优秀!