How to Support 3D Touch - Static Action on Xcode6
来源:互联网 发布:sd卡数据修复 编辑:程序博客网 时间:2024/05/16 19:42
Background
As Apple mentioned in developer documents:
With iOS 9, new iPhone models add a third dimension to the user interface.
A user can now press your Home screen icon to immediately access functionality provided by your app.
Within your app, a user can now press views to see previews of additional content and gain accelerated access to features.
U.S managers hope adopt part of them(home screen static action) in current release. But we need to huge effort(e.g IPv6 related task) to upgrade Xcode7, and current release had been in last development sprint. So I have to try implement ‘home screen static action’ feature using Xcode6.
Issues
After took a rough review about Apple’s documents. To implement ‘home screen static action’ feature, Apple introduced one new class named UIApplicationShortcutItem
and one new application delegate method named - (void) application: (UIApplication *)application performActionForShortcutItem: (UIApplicationShortcutItem *)shortcutItem completionHandler;
Above api were introduced since iOS9, how make it happen using Xcode6(maxim iOS version, iOS 8)?
How
Basically we would use runtime to resolve above issues. See below:
@class UIApplicationShortcutItem;- (void) handleShortCutItem: (UIApplicationShortcutItem *)shortcutItem;{ if ([[shortcutItem valueForKey: @"type"] isEqualToString: @"Foo"]) { /* quick action 'Foo' */ } else if ([[shortcutItem valueForKey: @"type"] isEqualToString: @"Bar"]) { /* quick action 'Bar' */ } else { /* default handle */ }}- (void) application: (UIApplication *)application performActionForShortcutItem: (UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL successed))completionHandler;{ [self handleShortCutItem: shortcutItem];}
More Code
Modify the Info.plist
<key>UIApplicationShortcutItems</key><array> <dict> <key>UIApplicationShortcutItemIconFile</key> <string>UIApplicationShortcutIconTypeCompose</string> <key>UIApplicationShortcutItemTitle</key> <string>Foo</string> <key>UIApplicationShortcutItemType</key> <string>Foo</string> <key>UIApplicationShortcutItemUserInfo</key> <dict> <key>key1</key> <string>value1</string> </dict> </dict> <dict> <key>UIApplicationShortcutItemIconType</key> <string>UIApplicationShortcutIconTypeFavorite</string> <key>UIApplicationShortcutItemTitle</key> <string>Bar</string> <key>UIApplicationShortcutItemType</key> <string>Bar</string> <key>UIApplicationShortcutItemUserInfo</key> <dict> <key>key2</key> <string>value2</string> </dict> </dict></array>
Modify ApplicationDelegate
Need to judge if rawOptions contains UIApplicationLaunchOptionsShortcutItemKey
key, if yes handle it and return NO
to avoid execute performActionForShortcutItem
repeatedly.
- (void) application: (UIApplication *)application performActionForShortcutItem: (UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL successed))completionHandler;{ RC_DLOG_TAG_BEG_ELAPSED; [self handleShortCutItem: shortcutItem]; RC_DLOG_TAG_END_ELAPSED;}- (BOOL) application: (UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)rawOptions;{ BOOL shouldPerformAdditionalDelegateHandling = YES; /* please replace the true value of UIApplicationLaunchOptionsShortcutItemKey from Xcode7 */ if (rawOptions && [rawOptions objectForKey: @"UIApplicationLaunchOptionsShortcutItemKey"]) { shouldPerformAdditionalDelegateHandling = NO; [self handleShortCutItem: [rawOptions objectForKey: @"UIApplicationLaunchOptionsShortcutItemKey"]]; } return shouldPerformAdditionalDelegateHandling;}
Reference
Getting Started with 3D Touch
UIApplicationShortcutItems
- How to Support 3D Touch - Static Action on Xcode6
- Support 3D Touch on Xcode6
- How to build cURL static library with SSL support on Windows
- How to compile mplayer with vdpau support on Ubuntu
- How-to: Enabled hive job running support on hive
- How To Configure Static IP On CentOS 6.4
- How to Add Perl CGI Script Support to Your Apache Server on Windows
- How to Add Perl CGI Script Support to Your Apache Web Server on Windows
- How to add / install JSON support to PHP on CentOS in 10 Steps
- 浅谈3D Touch(1) -- Home screen quick action
- 3D touch 之 Home Screen Quick Action 的创建
- How to Enable Multi-Touch
- how to compile android2.3 on ubuntu14
- How to freeze a dynamic aspx page into a static html page (on the server).
- How to freeze a dynamic aspx page into a static html page (on the server).
- How to create universal static libraries on Xcode 4: the traditional wa
- How to create universal static libraries on Xcode 4: the traditional way
- How to add or remove a static ARP entry on Linux
- C/C++常用宏定义
- Form表单中的action提交路径问题
- C++中struct和class的区别
- Gulp使用指南
- ftp与sftp连接实例
- How to Support 3D Touch - Static Action on Xcode6
- Android基础入门教程——8.1.2 Android中的13种Drawable小结 Part 2
- Code Forces 581 C. Developing Skills(贪心)
- C++primer第五版笔记-第九章顺序容器
- DBus 进程间的通信
- LeetCode-Invert Binary Tree
- hdu 1423 Greatest Common Increasing Subsequence 最长公共上升子序列
- 什么是EMC?说出至少三种测试实验项目,如何解决
- leetcode 1 Two Sum