Tag: 3dtouch

3D Touch — Peak&Pop功能

在我以前的文章中,我写了关于在您的应用中采用UIApplicationShortcutItems的文章。 现在是时候实现Peak&Pop了-3d Touch提供的一项功能。 开始吧 首先,我们需要检查我们的设备是否支持强制触摸事件。 然后,如果我们的设备熟悉强制触摸,则可以轻松注册UIViewController的强制触摸事件。 看一下这个片段: 第二种方法负责一个称为Pop的事件。 当3d touch机制检测到您强烈按下从viewControllerForLocation方法返回的ViewController ,它将调用该UIViewController并将其作为viewControllerToCommit给第二个viewControllerToCommit previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController)函数。 重要的是,当 viewControllerForLocation 返回 nil , 将不会调用 第二个函数 viewControllerToCommit 。 在此方法中,我们可以显示viewControllerToCommit或执行其他操作,例如,为触摸的视图添加动画。 实作 假设您有UIViewController ,其中包含两个UIImageViews ,其中包含漂亮的苹果图像。 对于此控制器,我们要实现3d Touch Peak&Pop功能。 在viewDidLoad()函数中,为强制触摸事件注册我们的控制器。 很好,是吗? 结论 我不喜欢确定用户触摸哪个视图的方法。 检查一个点并为此计算位置并不是很好。 实现视图的3d触摸机制的另一种更好的方法可能是:通过某些属性(例如3dTouchGestureRecognizerDelegate扩展UIView类,然后在UIViewControllerPreviewingDelegate实现某些方法。 然后,我们不必检查视图是否被触摸,因为在委托方法上,触摸的视图可以作为方法参数传递。 gestureRecognizer熟悉的东西。 也许在将来的iOS更新中,API会更改吗? 综上所述, UIViewControllerPreviewing允许我们创建非常漂亮的功能,我强烈建议您使用它并改善您的应用程序! 您可以在我的GitHub存储库中找到示例应用程序的整个实现。 感谢您的阅读,很快再见! 关于我 我是波兰格但斯克的软件开发人员。 大多数情况下都使用iOS,但我对其他任何技术,框架和挑战都持开放态度。 如果您喜欢我的帖子,请随时在Twitter上关注我并阅读我的个人博客。

iOS 9使用快速操作selecttabbar索引,performActionForShortcutItem

我有5个选项卡,并希望在用户select某个快速操作时转到特定选项卡。 不过,我试过使用通知中心,引用主视图控制器和引用应用程序委托中的选项卡,但似乎没有工作。 tabbar.selectedIndex方法确实被调用,但由于某些原因,使用快速操作时,选项卡不会改变。 @available(iOS 9.0, *) func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) { let revealVC = self.window!.rootViewController as! SWRevealViewController let tabVC = revealVC.childViewControllers[1] as! UITabBarController let navVC = tabVC.viewControllers![0] as! UINavigationController let shopVC = navVC.viewControllers[0] as! BrowseVC switch shortcutItem.type { case "com.modesens.search" : tabVC.selectedIndex = 0 //referencing method to go to […]

随着3D触摸偷看和stream行,你如何检测用户平移过程中(如Facebook)?

在Facebook应用程序中,如果您“窥视”作为相册一部分的照片,则可以水平滑动手指以转到其他照片。 这在API中如何完成? 我所看到的全部是提供一个视图控制器,并提交popup视图控制器。

迅速检查3D Touch是否可能

在我的应用程序中,我将显示设置,只有设备可以3D Touch才能看到。 目前我检查,如果该设备有ios9。 if #available(iOS 9.0, *) 问题是,例如,iPhone 6有iOS 9,但没有3D Touch。 我怎样才能快速检查3D Touch的可能性? 我发现这个post,但没有迅速的解决scheme: 检查是否支持3D触摸,并在iOS9设备上启用 还有一个问题。 现在我想检查一下iOS 9和3D Touch是否可用。 我试试这个: if (#available(iOS 9.0, *)) AND (is3DTouchAvailable() == true) { 但是我总是得到这个错误: 在'if'条件之后预期'{'

用UIApplicationShortcutItem启动

我正在为我的iOS 9应用程序快速实施一些3D触摸快速操作,而且我有一个奇怪的问题。 当我的应用程序在后台,我发动快速行动,一切都按计划进行。 当我的应用程序完全死亡(即,我从多任务菜单中杀死了它),然后我用快速的动作启动,应用程序崩溃。 我遇到麻烦,因为一旦我杀了应用程序,Xcode中的debugging会话被分离。 有没有办法让我连接到应用程序进行debugging像正常,还是有我的代码会导致它的东西? 提前致谢。 码: func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { var launchedFromShortCut = false //Check for ShortCutItem if let shortcutItem = launchOptions?[UIApplicationLaunchOptionsShortcutItemKey] as? UIApplicationShortcutItem { launchedFromShortCut = true self.handleShortCutItem(shortcutItem) } return !launchedFromShortCut } func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) { self.handleShortCutItem(shortcutItem) } func […]

3D触摸/强制触摸实施

我们如何实现3D触摸来检查用户是在UIView还是在UIView上触摸? 有没有办法做到这一点与UIGestureRecognize或只有与UITouch ?

在Obj-C中的3D触摸主页快捷方式

我所有的应用程序目前都是用Obj-C编写的。 链接https://developer.apple.com/library/content/samplecode/ApplicationShortcuts/Introduction/Intro.html#//apple_ref/doc/uid/TP40016545为实现主屏幕快捷方式与3D Touch的示例代码完全编译在Swift中。 任何人都会遇到Obj-C的文档,所以我不需要通过我的AppDelegate并翻译它呢? 更新: 在Info.plist中添加所有快捷方式后,我在AppDelegate.m中添加了: – (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler { UINavigationController *nav = (UINavigationController *) self.tabBarController.selectedViewController; NSLog(@"%@", shortcutItem.type); if ([shortcutItem.type isEqualToString:@"com.316apps.iPrayed.addPrayerRequest"]) { Requests *gonow = [[Requests alloc] init]; [nav pushViewController:gonow animated:YES]; } if ([shortcutItem.type isEqualToString:@"com.316apps.iPrayed.addPrayer"]) { PrayerStats *controller = [[PrayerStats alloc] init]; [nav pushViewController:controller animated:YES]; } if ([shortcutItem.type isEqualToString:@"com.316apps.iPrayed.addFast"]) { FastStats […]

3D Touch冻结我的APP

也许我的问题等于: 如果轻轻触摸,力度触摸animation会冻结 在iPhone 6s中,应用程序正在冻结“偷看和stream行”实现 1)没有“bug”的强制触摸:创build一个UITransitionView图层来预览我的视图控制器。 它完美的作品。 2)用“bug”强制触摸:当我轻轻地敲击button时, UITransitionView图层被创build,但是它的透明(没有内容),在这一点上,我不能与我的应用程序交互(因为顶层是“空的“)。 更新: 码: HomeViewController extension HomeViewController: UIViewControllerPreviewingDelegate { func previewingContext(previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? { if #available(iOS 9.0, *) { previewingContext.sourceRect = balanceButton!.bounds } let balanceViewController = UIStoryboard.balanceViewController() balanceViewController.delegate = self balanceViewController.account = account balanceViewController.preferredContentSize = CGSize(width: 0.0, height: 118) navigationController?.preferredContentSize = CGSize(width: 0.0, height: 118) […]

无声的3D触摸快速行动

至于新的iPhone 6s / 6s +的新的3D Touchfunction,我正在尝试添加一些主屏幕快速操作到我的应用程序。 我能够实现在主屏幕上触摸应用程序图标的正常stream程 – >select一个可用的快速操作 – >在所有可能的应用程序状态下正确处理它。 我的问题是:是否可以在可用的快速行动中创build一个无声的行动? silent我的意思是说,一定的行动将发生,但应用程序不会完成发射? 或者启动,但不会在前台? UPDATE 我将详细说明我要实现的目标 – 我希望与HealthKit提供的后台交付类似的行为 – 在商店更改的情况下,HealthKit会唤醒我的应用并给我一个机会背景(使用HealthKit示例 – 查询商店中的新数据)。 在阅读了关于这个主题的大量苹果文档之后,我感觉到现在的API是不可能的 – 但是我希望有人会让我吃惊。

3D从UITableViewCell触摸Peek和Pop如何将数据交给其他UIViewController?

我的应用程序在Core Data对象中存储不同的属性。 它们都显示在一个UITableView中,如果你点击一个单元格,就会显示一个DetailView。 像Master-Detail-XCode-Template一样。 现在我想用peek和pop来实现3D Touch。 就像在邮件应用程序中,3D触摸一个单元格,获得预览,按下更深,popup细节。 到目前为止,我已经得到了这个工作,但我无法弄清楚如何传递相应的数据 – (nullable UIViewController *)previewingContext:(id <UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location 和 – (void)previewingContext:(id <UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit 到另一个DetailViewController。 如果你只是点击单元格(没有3D触摸),我交出数据 – (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath]; [[segue destinationViewController] setDetailItem:object]; 我正在使用一个 id detailItem 在每个ViewController中,我将相应的对象设置为它。 所以我尝试了类似的工作,所以在我的DetailViewController我的“detailItem”需要从选定的(3D触摸)单元格相应的核心数据对象。 感谢帮助 !