• OneSwift - iOS Tips Based On Swift 今天为大家带来的是给应用添加3D Touch菜单,这样可以方便用户在首页即可快速访问某些页面。 以OneDay为例,通过3D Touch用户可以快速选择进入到添加页面、设置页面、归档页面...

    OneSwift - iOS Tips Based On Swift

    今天为大家带来的是给应用添加3D Touch菜单,这样可以方便用户在首页即可快速访问某些页面。 以OneDay为例,通过3D Touch用户可以快速选择进入到添加页面、设置页面、归档页面、首页。

    一、创建自定义的3D Touch菜单

    AppDelegatedidFinishLaunchingWithOptions中,我们添加下列代码,来实现按钮的添加。

    //添加icon 3d Touch
    let firstItemIcon:UIApplicationShortcutIcon = UIApplicationShortcutIcon(type: .confirmation)
    let firstItem = UIMutableApplicationShortcutItem(type: "1", localizedTitle: NSLocalizedString("Home", comment: "Home icon"), localizedSubtitle: nil, icon: firstItemIcon, userInfo: nil)
    
    let firstItemIcon1:UIApplicationShortcutIcon = UIApplicationShortcutIcon(type: .taskCompleted)
    let firstItem1 = UIMutableApplicationShortcutItem(type: "2", localizedTitle: NSLocalizedString("Archive ", comment: "Archive icon"), localizedSubtitle: nil, icon: firstItemIcon1, userInfo: nil)
    
    
    let firstItemIcon2:UIApplicationShortcutIcon = UIApplicationShortcutIcon(type: .task)
    let firstItem2 = UIMutableApplicationShortcutItem(type: "3", localizedTitle: NSLocalizedString("Setting", comment: "Setting icon"), localizedSubtitle: nil, icon: firstItemIcon2, userInfo: nil)
    
    
    let firstItemIcon3:UIApplicationShortcutIcon = UIApplicationShortcutIcon(type: .add)
    let firstItem3 = UIMutableApplicationShortcutItem(type: "4", localizedTitle: NSLocalizedString("Add", comment: "Add icon"), localizedSubtitle: nil, icon: firstItemIcon3, userInfo: nil)
    
    application.shortcutItems = [firstItem,firstItem1,firstItem2,firstItem3]
    
    复制代码

    其中按钮的icon使用系统的icon图片,其他图样可以参考这个链接。

    3DTouch Xcode原生图标icon图样预览

    二、为每个按钮添加响应事件

    接着我们为每个按钮添加响应事件,因为我的四个按钮刚好都到一个固定页面,所以响应事件实现页面的跳转即可。

    绑定按钮的事件函数:

    func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
            let handledShortCutItem = handleShortCutItem(shortcutItem: shortcutItem)
            completionHandler(handledShortCutItem)
        }
    复制代码

    函数的具体代码:

    func handleShortCutItem(shortcutItem: UIApplicationShortcutItem) -> Bool {
        var handled = false
    
        if shortcutItem.type == "1" { //首页
    
            let rootNavigationViewController = window!.rootViewController as? UINavigationController
            let rootViewController = rootNavigationViewController?.viewControllers.first as UIViewController?
    
            rootNavigationViewController?.popToRootViewController(animated: false)
            handled = true
    
        }
        if shortcutItem.type == "2" { //编辑
    
            let rootNavigationViewController = window!.rootViewController as? UINavigationController
            let rootViewController = rootNavigationViewController?.viewControllers.first as UIViewController?
    
            rootNavigationViewController?.popToRootViewController(animated: false)
            rootViewController?.performSegue(withIdentifier: "toArchive", sender: nil)
            handled = true
    
        }
    
        if shortcutItem.type == "3" { //设置
    
            let rootNavigationViewController = window!.rootViewController as? UINavigationController
            let rootViewController = rootNavigationViewController?.viewControllers.first as UIViewController?
    
            rootNavigationViewController?.popToRootViewController(animated: false)
            rootViewController?.performSegue(withIdentifier: "toSetting", sender: nil)
            handled = true
    
        }
    
        if shortcutItem.type == "4" { //编辑
    
            let rootNavigationViewController = window!.rootViewController as? UINavigationController
            let rootViewController = rootNavigationViewController?.viewControllers.first as UIViewController?
    
            rootNavigationViewController?.popToRootViewController(animated: false)
            rootViewController?.performSegue(withIdentifier: "addTodo", sender: nil)
            handled = true
    
        }
    
        return handled
    }
    复制代码

    这里我用到了performSegue,所以在Main.storyboard中会给每个跳转绑定ID。

    后续将补充介绍如何自定义icon、如何在页面内实现3D Touch,欢迎关注OneSwift的后续更新。

    GitHub:OneSwift - iOS Tips Based On Swift

    微博:xDEHANG

    展开全文
  • 3D Touch swift 版本 2015-12-01 15:24:58
    OSX 10.10.5 (14F27) XCODE Version 7.1.1 (7B1005) ...swift -version --->Apple Swift version 2.1 (swiftlang-700.1.101.6 clang-700.1.76) AppDelegate.swift: // // AppDelegate.swift // 3DTouchDemo /
  • Swift开发之3DTouch实用演练 2017-10-20 11:06:40
    2015年,苹果发布了iOS9以及iphone6s/iphone6s Plus,其中最具有创新的就是新的触控方式3D Touch,相对于多点触摸在平面二维空间的操作,3D Touch技术增加了对力度和手指面积的感知,可以通过长按快速预览、查看你想...
  • 本文讲的是用 Swift 枚举完美实现 3D touch 快捷操作, 完美实现 3D Touch 我不确定是否一开始 Swift 的创造者们能够估计到他们创造的这一门极其优美的语言,将带给开发者们如此激昂的热情。 我只想说,Swift 社区...
  • 写几点自己认为比较有用的地方,具体看上面链接 快捷编辑 info.plist在往 info.plist 中添加东西的时候,不需要以记事本的方式打开,只需要在其页面中右击,选择show Raw Keys/Values 即可看到原始的键名,然后正常...
  • Swift 2.3 IOS 8.0 XCode 8.0 添加入口标签在这里只说下静态的好了,暂时还用不到动态的,e.g.<key>UIApplicationShortcutItems <key>UIApplicationShortcutItemType <string>ReceiveMoney</s
  • 3D Touch 有三大模块: 1.Home Screen Quick Actions ----通过用力按压屏幕应用 icon 从而选择相应的功能跳转相应的界面.(也是本文主要介绍的模块). 2.peek and pop ----进入应用后,按压相应的 view 从而进行进一步...
  • 什么是3D Touch 3D Touch 是iOS9之后专为 iPhone6s 机型加入的新特性,这一新技术移植于 Mac Book 上的 ForceTouch 更准确地说应该是 ForceTouch 在iPhone 上的实现吧。3D Touch 实质是一种新型的快捷单点触控技术,...
  • 之前记录过OC版实现3D Touch功能的小小演示,最近无事整整swift,也能弄一过swift版的3D Touoch。。。 上代码。 一、3D Touch重按主屏icon出现快捷标签有两种添加方式: 1.静态添加,在工程中的info.plist文件中...
  • 3D Touch 之死 2019-09-18 10:52:34
    作者:I/O来源:雷锋网(leiphone-sz)虽然没有被市场认可,3D Touch 依然不失为苹果在产品层面的一次勇敢尝试。2015 年 9 月 9 日,苹果在当天举...
  • 项目里需要播放震动响应用户的长按,为了更优的体验,希望在拥有3D touch 的手机上,播放3D Touch的震动,因为AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)这个方法震感太强了.或则有什么办法播放弱一点的震动...
  • 之前一直在忙着维护项目,偶然的一天闲着玩手机玩到3Dtouch,看着效果挺不错的 于是就尝试着搜索了一下相关的文案,结果除了官网给的全英文api意外国内的基本都 是互相抄袭,我搜了37篇文章,29篇相似度惊人,而且仅...
  • iOS 为 App 图标添加 3D Touch 快捷访问菜单,Demo 地址: github.com/EyreFree/EF… 1. 注意事项 3D Touch 只在 iOS 9 及以上版本得到支持,之前版本的 iOS 并不支持该功能; 3D Touch 只在 iPhone 6s 及以后型号...
  • func creatShortcutItem() { let item1 = UIApplicationShortcutItem(type: "Shortcut1", localizedTitle: "搜索", localizedSubtitle: "此处可以搜索", icon:UIApplicationShortcutIcon(type: ...
  • 在Tamarin中 3D Touch 的使用 2016-03-18 09:00:12
    新的iPhone6s和iPhone6s Plus新添加了3D Touch的功能,本文简单介绍一下如何在Xamarin.iOS上面使用该功能。 3D Touch不仅会感知用户按压屏幕,也会感知压力的大小。要注意一点的是,现在的iOS模拟器并不支持3D ...
  • 3D Touch Peek、 Pop
  • 3D Touch大法 2016-09-12 15:09:25
    3D Touch最先应用在Apple Watch上面,但叫Force Touch,后在iPhone6s上加入了此特性,并改名3D Touch。值得注意的是目前3D Touch只支持iPhone6S以后的机型,包括现有Xcode7中6s的模拟器也不支持,不过Github上的...
1 2 3 4 5 ... 20
收藏数 1,267
精华内容 506