Home Screen Quick Actions

本文介绍iOS 9中3DTouch的HomeScreenQuickActions与ForceProperties功能。HomeScreenQuickActions允许开发者为应用程序图标设置快捷操作菜单,包括静态和动态添加方法。ForceProperties则引入力度感应交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2、Home Screen Quick Actions

通过主屏幕的应用Icon,我们可以用3D Touch呼出一个菜单,进行快速定位应用功能模块相关功能的开发,。如微信、京东的App,本文也将重点介绍这项开发技术。 


微信的快速入口

京东的快速入口

3、Force Properties

iOS9为我们提供了一个新的交互参数:力度。我们可以检测某一交互的力度值,来做相应的交互处理。例如,我们可以通过力度来控制快进的快慢,音量增加的快慢等。

Home Screen Quick Actions开发指南

3D Touch快速入口标签有两种添加方式:一种是静态添加,在工程中的info.plist文件中添加相关项目。通过这种方式添加的标签,在app第一次运行前,就可以唤出这些标签;另一种是动态添加,通过代码给App添加快速入口。这种方式添加的标签,第一次运行App前是看不到这些标签的,必须先运行一次App,以后就可以唤出这些标签了。

静态添加入口标签

静态添加入口标签不需要写代码,只需要在info.plist文件中添加相关功能设置即可。不过因为没有语句提示,所以我们只能一个字母一个字母的去添加,这一点不是很友好。

我们需要在info.plist中添加如下信息:


info.plist中添加的内容

分析一下添加的项目分别代表什么意思。

首先是UIApplicationShortcutItems,他是一个数组类型,数组中的每一个元素表示一个入口标签。

然后是Item0,这是数组中的一个元素,字典类型。在这个字典中配置各个标签的相关属性。

字段名 功能 是否必须 备注
UIApplicationShortcutItemType 这个键值设置一个快捷通道类型的字符串 必有项 我们可以监听该项的值来判断用户是从哪一个标签进入App的,该字段的值可以为空。
UIApplicationShortcutItemTitle 这个键值设置标签的标题 必有项 我们可以监听该项的值来判断用户是从哪一个标签进入App的
UIApplicationShortcutItemSubtitle 设置标签的副标题 可选项  
UIApplicationShortcutItemIconType 设置标签的图标样式,系统提供了29中样式的图标,但大部分只能在9.1的系统上使用,只有少数可以在9.0的系统中使用,这一部分会在后边详细介绍 可选项  
UIApplicationShortcutItemIconFile 设置自定义标签图片文件的路径 可选项  
UIApplicationShortcutItemUserInfo 设置用户信息,是一个字典类型,可以用来传值 可选项

按照如上截图配置info.plist文件后,我们运行程序,然后按压icon,出现的是如下效果:


静态添加的标签

这是在UIApplicationShortcutItems中添加了一个Item的情况,只添加了一个标签,如果想添加多个静态标签,如法炮制出多个Item即可。

动态添加入口标签

这种方法需要我们写代码来添加,首先来认识三个类:

类名 功能描述
UIApplicationShortcutItem 创建标签的类
UIMutableApplicationShortcutItem 创建可变标签的类
UIApplicationShortcutIcon 创建标签ICON的类

我们创建一个新工程,然后在工程中根视图的viewDidLoad方法中添加如下代码:

    // 创建标签的ICON图标。
    UIApplicationShortcutIcon *icon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeAdd];
    // 创建一个标签,并配置相关属性。
    UIApplicationShortcutItem *item = [[UIApplicationShortcutItem alloc] initWithType:@"two" localizedTitle:@"么么哒" localizedSubtitle:@"爱你呦" icon:icon userInfo:nil];
    // 将标签添加进Application的shortcutItems中。
    [UIApplication sharedApplication].shortcutItems = @[item];

上边的代码,第一步创建出标签的入口,这一步的配置与静态添加标签中的UIApplicationShortcutItemIconType目的一样。系统给我们提供了如下样式的标签:

typedef NS_ENUM(NSInteger, UIApplicationShortcutIconType) {
    UIApplicationShortcutIconTypeCompose,
    UIApplicationShortcutIconTypePlay,
    UIApplicationShortcutIconTypePause,
    UIApplicationShortcutIconTypeAdd,
    UIApplicationShortcutIconTypeLocation,
    UIApplicationShortcutIconTypeSearch,
    UIApplicationShortcutIconTypeShare,
    UIApplicationShortcutIconTypeProhibit       NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeContact        NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeHome           NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeMarkLocation   NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeFavorite       NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeLove           NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeCloud          NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeInvitation     NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeConfirmation   NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeMail           NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeMessage        NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeDate           NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeTime           NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeCapturePhoto   NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeCaptureVideo   NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeTask           NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeTaskCompleted  NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeAlarm          NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeBookmark       NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeShuffle        NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeAudio          NS_ENUM_AVAILABLE_IOS(9_1),
    UIApplicationShortcutIconTypeUpdate         NS_ENUM_AVAILABLE_IOS(9_1)
} NS_ENUM_AVAILABLE_IOS(9_0) __TVOS_PROHIBITED;

如果系统图标不满足需求,可以使用+ (instancetype)iconWithTemplateImageName:(NSString *)templateImageName;添加自定义图片作为标签,需要注意的是:图片必须预先添加进bundle。

第二步是创建一个标签,并进行相关配置,这一步与静态添加标签中的Item0一样,初始化中的相关设置和上边一模一样,不多啰嗦。

第三步是将标签添加进pplication的shortcutItems中,如果想添加多个标签,可以创建多个UIApplicationShortcutItem对象,并加入数组中。

添加完后,我们再次运行程序查看效果:


动态添加标签后的效果

检测App启动方式

标签添加完成了,现在我们可以通过两种途径来启动App,一种是传统的点击icon图标启动App,另一种是通过按压icon唤起快速入口,通过快速入口进入App中指定的功能页面。我们要如何检测是从哪里进入App呢?

iOS9在AppDelegated中提供了一个新方法:- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler,如果App是从快速入口启动的,则会执行这个方法。该方法的shortcutItem参数携带了从快速入口进入app时的标签参数。

如果是从快速入口启动的App,我们可以判断shortcutItem.localizedTitle属性的值来判断是从哪一个标签进入的App。

来一个需求:如果是从“点我”这个标签进来的,我们把页面背景颜色修改为黄色,如果是从“么么哒”这个标签进来的,我们讲页面背景颜色修改为红色。代码如下:

// 程序在后台运行,或者从死亡被激活,从3d进来的页面
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
    if ([shortcutItem.localizedTitle isEqualToString:@"点我"]) {
        self.window.rootViewController.view.backgroundColor = [UIColor yellowColor];
    } else if ([shortcutItem.localizedTitle isEqualToString:@"么么哒"]) {
        self.window.rootViewController.view.backgroundColor = [UIColor redColor];
    }
}

# 问题--设置代码补全 * `Continue - open-source AI code assistant`插件怎么添加代码补全功能呢? * 使用的是购买的deepseek api。 * 面板上有这些选项,第一个`settings`: ```text Settings Indexing③ Help4 Shortcuts User settings Show Session Tabs Wrap Codeblocks Show Chat Scrollbar Text-to-Speech Output Enable Session Titles Format Markdown Allow Anonymous Telemetry Enable Indexing Font Size14 Multiline AutocompletionsAuto Autocomplete Timeout (ms)150 Autocomplete Debounce (ms)250 Disable autocomplete in files Comma-separated list of path matchers Experimental Settings Auto-Accept Agent Edits Add Current File by Default Enable experimental tools @Codebase: use tool calling only ``` * `indexing`: ```text @codebase index Local embeddings of your codebase Indexing complete Click to re-index ``` * `help`: ```text Help center Continue Hub Visit hub.continue.dev to explore custom assistants and blocks Documentation Learn how to configure and use Continue Have an issue? Let us know on GitHub and we'll do our5 best to resolve it Join the community! Join us on Discord to stay up-to-date on the latest developments Token usage Daily token usage across models国 Quickstart Reopen the quickstart and tutorial file ``` * `shortcuts`: ```text Keyboard shortcuts Toggle Selected Model:Ctrl+ Edit highlighted code:Ctrl + I New Chat / New Chat With Selected Code / Close Continue Sidebar IfCtrl+L Chat Already In Focus: Cancel response:Ctrl + Backspace β Toggle inline edit focus:Ctrl+Shiftt+I Focus Current Chat / Add Selected Code To Current Chat / Close ContinueCtrl + Shift +L Sidebar If Chat Already In Focus: Debug Terminal:Ctrl+ Shift + R Reject Diff:Ctrl+Shift+Backspace β Accept Diff:Ctrl + Shift+Enter Reject Top Change in Diff:Alt + Ctrl + N Accept Top Change in Diff:Alt + Ctrl +Y Toggle Autocomplete Enabled:Ctrl + K + Ctrl + A Force an Autocomplete Trigger:Ctrlj+ Alt + Space Toggle Full Screen:Ctrl + K + Ctrl + M ``` # 问题 * `ctrl + shift + p`后,搜索`Continue: Edit Config File`,发现没有对应内容: ```text Continue Console:焦点在 Continue Console 视图上 Continue Console: Focus on Continue Console View Continue:焦点在 Continue 视图上 Continue: Focus on Continue View Continue: Continue: Force Next Edit 聊天:打开聊天(Edit) Chat: Open Chat (Edit) ``` * 在扩展里面找到`continue`插件,点击设置,有这些按钮: ```text Continue: Disable Quick Fix Disable the quick fix feature. Continue: Enable Console Enable a console to log and explore model inputs and outputs.It can be found in the bottom panel. Continue: Enable Quick Actions Enable the experimental Quick Actions feature. Read our walkthrough to learn about configuration and how to share feedback: continue.dev > Walkthrough: Quick Actions (experimental) Continue: Enable Tab Autocomplete \ Enable Continue's tab autocomplete feature. Read our walkthrough to learn about configuration and how to share feedback: continue.dev > Walkthrough: Tab Autocomplete (beta) Continue: Pause Codebase Index On Start Pause Continue's codebase index on start. Continue: Pause Tab Autocomplete On Battery Pause Continue's tab autocomplete feature when your battery is low. Continue: Remote Config Server Url If your team is set up to use shared configuration, enter the server URL here and your user token below to enable automatic syncing. Continue: Remote Config Sync Period The period of time in minutes between automatic syncs. 60 Continue: Show Inline Tip Show inline suggestion to use the Continue keyboard shortcuts (e.g."Cmd/Ctrl L to select code, Cmd/trl I to edit"). Continue: Telemetry Enabled Continue collects anonymous usage data, cleaned of Pll to help us improve the product for our users. Read more at continue.dev> Telemetry. Continue: User Token If your team is set up to use shared configuration, enter your user token here and your server URL above to enable automatic syncing. ```
最新发布
07-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值