gpt4 book ai didi

ios - 同一 ViewController 的 3D Touch 快速操作

转载 作者:行者123 更新时间:2023-11-28 06:16:08 24 4
gpt4 key购买 nike

我的应用程序的条目 ViewController 包含两个按钮:weightage。在主 ViewController 中,这是在您单击 weight 按钮时运行的代码:

@IBAction func weightSearch(_ sender: Any) {
//Weight button clicked
inputReset()
userInput.keyboardType = UIKeyboardType.numberPad
userInput.becomeFirstResponder()
}

这是当您单击 age 按钮时运行的代码:

@IBAction func ageSearch(_ sender: Any) {
//Age button clicked
inputReset()
userInput.inputView = agePicker
userInput.becomeFirstResponder()
}

我想做的是实现两个 3D Touch 快速操作,一个称为 Weight Search(它运行 func weightSearch 的代码),另一个称为 Age Search(运行 func ageSearch 的代码)。这是我到目前为止所做的:

  1. Info.plist 文件中,我创建了一个 UIApplicationShortcutItems 数组,其中包含两个字典类型的 Items,以及它们各自的 UIApplicationShortcutItemTitleUIApplicationShortcutItemType
  2. 在我的 AppDelegate.swift 文件中,我添加了初步的快速操作代码:

    func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
    //3D touch features
    }

我现在的问题是我不确定要为我的 AppDelegate.swift 文件编写什么代码。我看过的所有教程和本网站上的所有类似问题都涉及使用快速操作调用不同的 ViewController,而不是在同一个 ViewController 上调用不同的函数。提前谢谢你。

最佳答案

因为 iOS 告诉您的 AppDelegate 用户选择了一个快速操作,您可以自由地使用它做任何您想做的事情。要获得对您的 ViewController 的引用,您只需向 window 询问 rootViewController(这将是您的 ViewController ).然后你就可以自由地做你需要做的事了。

func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
guard let viewController = window?.rootViewController as? ViewController else { return }
viewController.performSomeAction()
}

如果将来某个时候您更改为具有不同类型的 View Controller 作为根,则您还可以在未来证明这一点并在 Debug模式下运行时崩溃:

func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
guard let viewController = window?.rootViewController as? ViewController else {
assertionFailure("Wrong view controller type!") // This only crashes in debug mode
return
}
viewController.performSomeAction()
}

关于ios - 同一 ViewController 的 3D Touch 快速操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45088278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com