在 直达篇文章 我早就用 iPhone
的模拟器添加了 支持调试 3D touch 的力量

鉴于 3D touch 的成效 iPhone
的模拟器并无支持、但是这并无能够挡住我们进行调剂
每当 gitHub 早出大神提供了模拟器调试 Quick Action 的法门
列之地点是:https://github.com/DeskConnect/SBShortcutMenuSimulator
下面简单介绍一下设置之手续:
打开终端

如何让 iPhone 模拟器 支持3D
touch

git clone https://github.com/DeskConnect/SBShortcutMenuSimulator.git
cd SBShortcutMenuSimulatmake

对接下去就是是怎样用装逼进行到底
怎么样创建 Quick Action 也就算是重新按 app 图标时弹出的那几单菜单

万一电脑被发生多独Xcode版本,先举行如下操作,如果只有Xcode7
�那么您得超越了此步

imooc 免费 IT 教育

sudo xcode-select -switch /Applications/Xcode2.app/Contents/Developer/

碰巧使上面的希冀被生�两独Action Item 【历史记录】【查看下载】
每个 Action 都是用 UIApplicationShortcutItem 这个目标进行创办的
脚列有每一个 UIApplicationShortcutItem 中可知包含的信息:

此处要注意的是:上面命令中,Xcode2.app 是若电脑中Xcode的名
假若名字被起空格,需要改一下,把空格去丢,否则会影响终端命令的例行实施。

名称 �描述 必须
UIApplicationShortcutItemType item事件的唯一标示、通过茨表示可以确定点击的那个item YES
UIApplicationShortcutItemTitle item的标题、subtitle为空时、title过长可能会换行显示 YES
UIApplicationShortcutItemSubtitle item的子标题、在title下方以小文字显示 NO
UIApplicationShortcutItemIconType item图标枚举、系统的样式 NO
UIApplicationShortcutItemIconFile 自定义item图标、大小为 35*35 的单一颜色样式呈现、 如果设置此项 UIApplicationShortcutItemIconType 将会失效 NO
UIApplicationShortcutItemUserInfo 以字典的形式 key : value NO

然后你得实行如下命令进入 SBShortcutMenuSimulator 的目

* Home Screen Quick Action 的创导 有个别栽艺术
1. 静态
2. 动态

* 需要注意的是
每个App最多能够显示 4个Action Item,4个Action Item,4个Action Item
重要的事情要说 三 遍 最多4个Action Item
支持【静态方式】和【动态方式】同时存在、并不会冲突
如果你比较够叛逆、够任性、同时使用了【静态】和【动态】方式
那么你给 UIApplication 的 shortcutItems 这个数组赋值的时候并不会覆盖、并不会覆盖、并不会覆盖
我又说了三遍... 见谅
  • ###### 静态方式

静态创建的方是在路之 Info.plist 文件中上加数组即可

<key>UIApplicationShortcutItems</key>
<array>
        <dict>
           <key>UIApplicationShortcutItemType</key>
           <string>download</string> 
           <key>UIApplicationShortcutItemTitle</key>
           <string>历史记录</string>
           <key>UIApplicationShortcutItemSubtitle</key>
           <string></string>
           <key>UIApplicationShortcutItemIconFile</key>            
           <string>�shortcut_history.png</string>
           <key>UIApplicationShortcutItemUserInfo</key>
           <dict>
                    <key>***</key>
                    <string>***</string>
           </dict>
        </dict> 
        <dict> 
              <key>UIApplicationShortcutItemType</key>
              <string>download</string>
              <key>UIApplicationShortcutItemTitle</key>
              <string>查看下载</string>
              <key>UIApplicationShortcutItemSubtitle</key>
              <string></string>
              <key>UIApplicationShortcutItemIconFile</key>
              <string>�shortcut_download.png</string>
              <key>UIApplicationShortcutItemUserInfo</key>
              <dict> 
                   <key>***</key>
                   <string>***</string>
              </dict>
        </dict>
</array>
  • ###### �动态方式

动态方式需要以 application didFinishLachingWithOption: 方法被落实

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{
      if (self.forceTouchCapability == UIForceTouchCapabilityAvailable) {
          // 为了更直观的阅读代码 这里分成两行写
          UIApplicationShortcutIcon *historyIcon;
          historyIcon = [UIApplicationShortcutIcon iconWithTemplateImageName:@"shortcut_history"];
          UIApplicationShortcutItem *historyItem = [[UIApplicationShortcutItem alloc]
                                                    initWithType:@"history"
                                                    localizedTitle:@"历史记录"
                                                    localizedSubtitle:nil
                                                    icon:historyIcon
                                                    userInfo:nil];

           // 为了更直观的阅读代码 这里分成两行写
          UIApplicationShortcutIcon *downloadIcom;
          downloadIcom = [UIApplicationShortcutIcon iconWithTemplateImageName:@"shortcut_download"];
          UIApplicationShortcutItem *downloadItem = [[UIApplicationShortcutItem alloc]
                                                     initWithType:@"download"
                                                     localizedTitle:@"查看下载"
                                                     localizedSubtitle:nil
                                                     icon:downloadIcom
                                                     userInfo:nil];

          application.shortcutItems = @[historyItem, downloadItem];
    }
}

至于Quick Action 中 item 的点击事件 回调响应

- (void)application:(UIApplication *)application 
           performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem     
           completionHandler:(void (^)(BOOL))completionHandler {

}

自身好起 shortcutItem 的 type 和 userinfo 来做不同之事件处理
而最后之 completionHandler 在 API 的说明中我们看来当以并非以后台
而是径直还开始进程的当儿,会一直归NO 这样的话我们的回调会在

- (BOOL)application:(UIApplication *)application 
       didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

这儿候 UIApplication 刚好提供了一个得自 launchOptions 这个字典中
获取到 shortcutItem 的 key UIApplicationLaunchOptionsShortcutItemKey
生矣之Key 我们就可拍卖不同的波

UIApplicationShortcutItem *item;  // 为了更直观的阅读代码 这里分成两行写
item = [launchOptions valueForKey:UIApplicationLaunchOptionsShortcutItemKey];

然咱们根据取得到不同的 Action Item 来拍卖不同的风波
在 performActionForShortcutItem 回调中

- (void)application:(UIApplication *)application 
        performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem
        completionHandler:(void(^)(BOOL succeeded))completionHandler  
{
        if ([shortcutItem.type isEqualToString:@"history"]) {
            NSLog(@"历史记录");
        }else if ([shortcutItem.type isEqualToString:@"download"]){
            NSLog(@"查看下载");
        }
        if (completionHandler) { 
              completionHandler(YES); 
        }
}

假设你觉得自身的篇章针对性君产生帮衬,向自己发个红包吧!
本人用精诚德感谢你针对本身的支持!你的支撑就是本身的动力!

cd SBShortcutMenuSimulatmake
make

微信扫码向自己发红包

微信.jpeg

继续执行下面的少数独命

支付宝扫码向本人发红包

支付宝.jpeg

xcrun simctl spawn booted launchctl debug system/com.apple.SpringBoard --environment DYLD_INSERT_LIBRARIES=$PWD/SBShortcutMenuSimulator.dylib
xcrun simctl spawn booted launchctl stop com.apple.SpringBoard

目终端输出下面这些提示 说明服务就布置成功了
Service configured for next launch.

接着我们虽得经向指定端口发送信息的不二法门来当模拟器上 模拟 3D Touch
的机能:

echo 'com.apple.mobilecal'| nc 127.0.0.1 8000

得小心的凡 单引号中 com.apple.mobilecal 是动之 Bundle ID
若果如测试你自己之动,直接用那反成为你们用的 Bundle ID 即可
上面的 ‘com.apple.mobilecal’ iOS系统的日历
咱得以拘留一下模拟器上之功力:

亚洲杯盘口 1

Simulator Screen Shot 2015年11月27日 下午4.01.19

* 这里不得不提一下 apple 公司设想工作真的好到
当我们的 app 在屏幕的靠左边的位置时
3D touch 的菜单弹出时 图片在左边、文字在右边 如上图所示的样子

---------------------- 牛逼的分割线 ----------------------

相反当我们的 app 在屏幕的右边时
3D touch 的菜单弹出时 图片在右边、文字在左边 如下图所示

亚洲杯盘口 2

Simulator Screen Shot 2015年11月27日 下午4.02.50.png

假设你看自己之章针对性您发帮带,向自身作个红包吧!
自将精诚德感谢你针对自身的支撑!你的支撑就是本身的动力!

微信扫码向自身发红包

亚洲杯盘口 3

微信.jpeg

支付宝扫码向本人作红包

亚洲杯盘口 4

支付宝.jpeg

相关文章

网站地图xml地图