├── Pod ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ ├── DFContinuousForceTouchGestureRecognizer.h │ └── DFContinuousForceTouchGestureRecognizer.m ├── _Pods.xcodeproj ├── Example ├── Tests │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── Tests-Prefix.pch │ ├── Tests-Info.plist │ └── Tests.m ├── Pods │ ├── Target Support Files │ │ ├── DFContinuousForceTouchGestureRecognizer │ │ │ ├── DFContinuousForceTouchGestureRecognizer.xcconfig │ │ │ ├── DFContinuousForceTouchGestureRecognizer-prefix.pch │ │ │ ├── DFContinuousForceTouchGestureRecognizer.modulemap │ │ │ ├── DFContinuousForceTouchGestureRecognizer-dummy.m │ │ │ ├── DFContinuousForceTouchGestureRecognizer-umbrella.h │ │ │ ├── DFContinuousForceTouchGestureRecognizer-Private.xcconfig │ │ │ └── Info.plist │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Tests │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Tests.modulemap │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Tests-dummy.m │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Tests-umbrella.h │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Tests.debug.xcconfig │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Tests.release.xcconfig │ │ │ ├── Info.plist │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Tests-acknowledgements.markdown │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Tests-acknowledgements.plist │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Tests-frameworks.sh │ │ │ └── Pods-DFContinuousForceTouchGestureRecognizer_Tests-resources.sh │ │ └── Pods-DFContinuousForceTouchGestureRecognizer_Example │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Example.modulemap │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Example-dummy.m │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Example-umbrella.h │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Example.debug.xcconfig │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Example.release.xcconfig │ │ │ ├── Info.plist │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Example-acknowledgements.markdown │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Example-acknowledgements.plist │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Example-frameworks.sh │ │ │ └── Pods-DFContinuousForceTouchGestureRecognizer_Example-resources.sh │ ├── Headers │ │ └── Private │ │ │ └── DFContinuousForceTouchGestureRecognizer │ │ │ └── DFContinuousForceTouchGestureRecognizer.h │ ├── Manifest.lock │ ├── Local Podspecs │ │ └── DFContinuousForceTouchGestureRecognizer.podspec.json │ └── Pods.xcodeproj │ │ ├── xcuserdata │ │ └── dfogg.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── xcschememanagement.plist │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Tests.xcscheme │ │ │ ├── Pods-DFContinuousForceTouchGestureRecognizer_Example.xcscheme │ │ │ └── DFContinuousForceTouchGestureRecognizer-DFContinuousForceTouchGestureRecognizer.xcscheme │ │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── DFContinuousForceTouchGestureRecognizer.xcscheme │ │ └── project.pbxproj ├── DFContinuousForceTouchGestureRecognizer │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── elephant.imageset │ │ │ ├── elephant.png │ │ │ └── Contents.json │ │ ├── LaunchImage.imageset │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── elephant.png │ ├── ViewController.h │ ├── AppDelegate.h │ ├── DFContinuousForceTouchGestureRecognizer-Prefix.pch │ ├── main.m │ ├── Info.plist │ ├── DFContinuousForceTouchGestureRecognizer-Info.plist │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── AppDelegate.m │ └── ViewController.m ├── Podfile.lock ├── Podfile └── DFContinuousForceTouchGestureRecognizer.xcodeproj │ ├── xcuserdata │ └── dfogg.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist │ ├── xcshareddata │ └── xcschemes │ │ └── DFContinuousForceTouchGestureRecognizer-Example.xcscheme │ └── project.pbxproj ├── LICENSE ├── DFContinuousForceTouchGestureRecognizer.podspec └── README.md /Pod/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Pod/Classes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj -------------------------------------------------------------------------------- /Example/Tests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer.xcconfig: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/DFContinuousForceTouchGestureRecognizer.h -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Example/Tests/Tests-Prefix.pch: -------------------------------------------------------------------------------- 1 | // The contents of this file are implicitly included at the beginning of every test case source file. 2 | 3 | #ifdef __OBJC__ 4 | 5 | 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer/elephant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foggzilla/DFContinuousForceTouchGestureRecognizer/HEAD/Example/DFContinuousForceTouchGestureRecognizer/elephant.png -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer/Assets.xcassets/elephant.imageset/elephant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foggzilla/DFContinuousForceTouchGestureRecognizer/HEAD/Example/DFContinuousForceTouchGestureRecognizer/Assets.xcassets/elephant.imageset/elephant.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer.modulemap: -------------------------------------------------------------------------------- 1 | framework module DFContinuousForceTouchGestureRecognizer { 2 | umbrella header "DFContinuousForceTouchGestureRecognizer-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_DFContinuousForceTouchGestureRecognizer : NSObject 3 | @end 4 | @implementation PodsDummy_DFContinuousForceTouchGestureRecognizer 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Pods-DFContinuousForceTouchGestureRecognizer_Tests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_DFContinuousForceTouchGestureRecognizer_Tests { 2 | umbrella header "Pods-DFContinuousForceTouchGestureRecognizer_Tests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Pods-DFContinuousForceTouchGestureRecognizer_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_DFContinuousForceTouchGestureRecognizer_Example { 2 | umbrella header "Pods-DFContinuousForceTouchGestureRecognizer_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Pods-DFContinuousForceTouchGestureRecognizer_Tests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_DFContinuousForceTouchGestureRecognizer_Tests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_DFContinuousForceTouchGestureRecognizer_Tests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Pods-DFContinuousForceTouchGestureRecognizer_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_DFContinuousForceTouchGestureRecognizer_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_DFContinuousForceTouchGestureRecognizer_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // DFContinuousForceTouchGestureRecognizer 4 | // 5 | // Created by Daniel Fogg on 9/30/15. 6 | // Copyright © 2015 Daniel J Fogg. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Pods-DFContinuousForceTouchGestureRecognizer_Tests-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_DFContinuousForceTouchGestureRecognizer_TestsVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_DFContinuousForceTouchGestureRecognizer_TestsVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Pods-DFContinuousForceTouchGestureRecognizer_Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_DFContinuousForceTouchGestureRecognizer_ExampleVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_DFContinuousForceTouchGestureRecognizer_ExampleVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "DFContinuousForceTouchGestureRecognizer.h" 4 | 5 | FOUNDATION_EXPORT double DFContinuousForceTouchGestureRecognizerVersionNumber; 6 | FOUNDATION_EXPORT const unsigned char DFContinuousForceTouchGestureRecognizerVersionString[]; 7 | 8 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - DFContinuousForceTouchGestureRecognizer (0.1.0) 3 | 4 | DEPENDENCIES: 5 | - DFContinuousForceTouchGestureRecognizer (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | DFContinuousForceTouchGestureRecognizer: 9 | :path: ../ 10 | 11 | SPEC CHECKSUMS: 12 | DFContinuousForceTouchGestureRecognizer: a5cd6bf98478917e7745d57f15667ec98efb87f1 13 | 14 | COCOAPODS: 0.38.2 15 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - DFContinuousForceTouchGestureRecognizer (0.1.0) 3 | 4 | DEPENDENCIES: 5 | - DFContinuousForceTouchGestureRecognizer (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | DFContinuousForceTouchGestureRecognizer: 9 | :path: ../ 10 | 11 | SPEC CHECKSUMS: 12 | DFContinuousForceTouchGestureRecognizer: a5cd6bf98478917e7745d57f15667ec98efb87f1 13 | 14 | COCOAPODS: 0.38.2 15 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | source 'https://github.com/CocoaPods/Specs.git' 2 | use_frameworks! 3 | 4 | target 'DFContinuousForceTouchGestureRecognizer_Example', :exclusive => true do 5 | pod "DFContinuousForceTouchGestureRecognizer", :path => "../" 6 | end 7 | 8 | target 'DFContinuousForceTouchGestureRecognizer_Tests', :exclusive => true do 9 | pod "DFContinuousForceTouchGestureRecognizer", :path => "../" 10 | 11 | 12 | end 13 | -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // DFContinuousForceTouchGestureRecognizer 4 | // 5 | // Created by Daniel Fogg on 9/30/15. 6 | // Copyright © 2015 Daniel J Fogg. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer-Private.xcconfig: -------------------------------------------------------------------------------- 1 | #include "DFContinuousForceTouchGestureRecognizer.xcconfig" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/DFContinuousForceTouchGestureRecognizer" "${PODS_ROOT}/Headers/Public" 4 | PODS_ROOT = ${SRCROOT} 5 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "idiom" : "universal", 13 | "scale" : "3x" 14 | } 15 | ], 16 | "info" : { 17 | "version" : 1, 18 | "author" : "xcode" 19 | } 20 | } -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer/Assets.xcassets/elephant.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "idiom" : "universal", 13 | "filename" : "elephant.png", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | @import UIKit; 15 | @import Foundation; 16 | #endif 17 | -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // DFContinuousForceTouchGestureRecognizer 4 | // 5 | // Created by Daniel Fogg on 9/30/15. 6 | // Copyright © 2015 Daniel J Fogg. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer.xcodeproj/xcuserdata/dfogg.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SuppressBuildableAutocreation 6 | 7 | 6003F589195388D20070C39A 8 | 9 | primary 10 | 11 | 12 | 6003F5AD195388D20070C39A 13 | 14 | primary 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Pods-DFContinuousForceTouchGestureRecognizer_Tests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 3 | OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/DFContinuousForceTouchGestureRecognizer.framework/Headers" 4 | OTHER_LDFLAGS = $(inherited) -framework "DFContinuousForceTouchGestureRecognizer" 5 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-DFContinuousForceTouchGestureRecognizer_Tests 6 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Pods-DFContinuousForceTouchGestureRecognizer_Tests.release.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 3 | OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/DFContinuousForceTouchGestureRecognizer.framework/Headers" 4 | OTHER_LDFLAGS = $(inherited) -framework "DFContinuousForceTouchGestureRecognizer" 5 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-DFContinuousForceTouchGestureRecognizer_Tests 6 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Pods-DFContinuousForceTouchGestureRecognizer_Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 3 | OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/DFContinuousForceTouchGestureRecognizer.framework/Headers" 4 | OTHER_LDFLAGS = $(inherited) -framework "DFContinuousForceTouchGestureRecognizer" 5 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-DFContinuousForceTouchGestureRecognizer_Example 6 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Pods-DFContinuousForceTouchGestureRecognizer_Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 3 | OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/DFContinuousForceTouchGestureRecognizer.framework/Headers" 4 | OTHER_LDFLAGS = $(inherited) -framework "DFContinuousForceTouchGestureRecognizer" 5 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-DFContinuousForceTouchGestureRecognizer_Example 6 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /Example/Tests/Tests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Example/Tests/Tests.m: -------------------------------------------------------------------------------- 1 | // 2 | // DFContinuousForceTouchGestureRecognizerTests.m 3 | // DFContinuousForceTouchGestureRecognizerTests 4 | // 5 | // Created by Daniel Fogg on 10/14/2015. 6 | // Copyright (c) 2015 Daniel Fogg. All rights reserved. 7 | // 8 | 9 | @import XCTest; 10 | 11 | @interface Tests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation Tests 16 | 17 | - (void)setUp 18 | { 19 | [super setUp]; 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | } 22 | 23 | - (void)tearDown 24 | { 25 | // Put teardown code here. This method is called after the invocation of each test method in the class. 26 | [super tearDown]; 27 | } 28 | 29 | - (void)testExample 30 | { 31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 32 | } 33 | 34 | @end 35 | 36 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/DFContinuousForceTouchGestureRecognizer/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 0.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015 Daniel Fogg 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/DFContinuousForceTouchGestureRecognizer.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DFContinuousForceTouchGestureRecognizer", 3 | "version": "0.1.0", 4 | "summary": "Extension of UIGestureRecognizer that recognizes a force touch gesture and provides continuous updates regarding touch force changes.", 5 | "description": "iOS Force Touch gesture recognizer that will stream force updates to the delegate for the user's finger pressure changes. It gives you the capability to detect force touch and monitor pressure changes on a view in order to adapt your ui for an added dimension of interaction. This is only useful for running on a physical device that supports force touch.", 6 | "homepage": "https://github.com/foggzilla/DFContinuousForceTouchGestureRecognizer", 7 | "license": "MIT", 8 | "authors": { 9 | "Daniel Fogg": "danielj_fogg@yahoo.com" 10 | }, 11 | "source": { 12 | "git": "https://github.com/foggzilla/DFContinuousForceTouchGestureRecognizer.git", 13 | "tag": "0.1.0" 14 | }, 15 | "platforms": { 16 | "ios": "7.0" 17 | }, 18 | "requires_arc": true, 19 | "source_files": "Pod/Classes/**/*", 20 | "resource_bundles": { 21 | "DFContinuousForceTouchGestureRecognizer": [ 22 | "Pod/Assets/*.png" 23 | ] 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "29x29", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "29x29", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "40x40", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "40x40", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "76x76", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "76x76", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Pods-DFContinuousForceTouchGestureRecognizer_Tests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## DFContinuousForceTouchGestureRecognizer 5 | 6 | Copyright (c) 2015 Daniel Fogg 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - http://cocoapods.org 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Pods-DFContinuousForceTouchGestureRecognizer_Example-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## DFContinuousForceTouchGestureRecognizer 5 | 6 | Copyright (c) 2015 Daniel Fogg 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - http://cocoapods.org 27 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/xcuserdata/dfogg.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | DFContinuousForceTouchGestureRecognizer-DFContinuousForceTouchGestureRecognizer.xcscheme 8 | 9 | isShown 10 | 11 | 12 | DFContinuousForceTouchGestureRecognizer.xcscheme 13 | 14 | isShown 15 | 16 | 17 | Pods-DFContinuousForceTouchGestureRecognizer_Example.xcscheme 18 | 19 | isShown 20 | 21 | 22 | Pods-DFContinuousForceTouchGestureRecognizer_Tests.xcscheme 23 | 24 | isShown 25 | 26 | 27 | 28 | SuppressBuildableAutocreation 29 | 30 | 4502A5E2AF8AE29D0633003E8A59345B 31 | 32 | primary 33 | 34 | 35 | 57F63C0ED28C12E1AB8EC9420FB0681C 36 | 37 | primary 38 | 39 | 40 | A42FA7AE2B8AF53B5ABB8340A71F8010 41 | 42 | primary 43 | 44 | 45 | C4F033C17E6354314C6F993707B0F02D 46 | 47 | primary 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UISupportedInterfaceOrientations~ipad 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationPortraitUpsideDown 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UISupportedInterfaceOrientations~ipad 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationPortraitUpsideDown 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /DFContinuousForceTouchGestureRecognizer.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint DFContinuousForceTouchGestureRecognizer.podspec' to ensure this is a 3 | # valid spec before submitting. 4 | # 5 | # Any lines starting with a # are optional, but their use is encouraged 6 | # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | s.name = "DFContinuousForceTouchGestureRecognizer" 11 | s.version = "0.1.0" 12 | s.summary = "Extension of UIGestureRecognizer that recognizes a force touch gesture and provides continuous updates regarding touch force changes." 13 | 14 | # This description is used to generate tags and improve search results. 15 | # * Think: What does it do? Why did you write it? What is the focus? 16 | # * Try to keep it short, snappy and to the point. 17 | # * Write the description between the DESC delimiters below. 18 | # * Finally, don't worry about the indent, CocoaPods strips it! 19 | s.description = "iOS Force Touch gesture recognizer that will stream force updates to the delegate for the user's finger pressure changes. It gives you the capability to detect force touch and monitor pressure changes on a view in order to adapt your ui for an added dimension of interaction. This is only useful for running on a physical device that supports force touch." 20 | 21 | s.homepage = "https://github.com/foggzilla/DFContinuousForceTouchGestureRecognizer" 22 | # s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2" 23 | s.license = 'MIT' 24 | s.author = { "Daniel Fogg" => "danielj_fogg@yahoo.com" } 25 | s.source = { :git => "https://github.com/foggzilla/DFContinuousForceTouchGestureRecognizer.git", :tag => s.version.to_s } 26 | # s.social_media_url = 'https://twitter.com/' 27 | 28 | s.platform = :ios, '7.0' 29 | s.requires_arc = true 30 | 31 | s.source_files = 'Pod/Classes/**/*' 32 | s.resource_bundles = { 33 | 'DFContinuousForceTouchGestureRecognizer' => ['Pod/Assets/*.png'] 34 | } 35 | 36 | # s.public_header_files = 'Pod/Classes/**/*.h' 37 | # s.frameworks = 'UIKit', 'MapKit' 38 | # s.dependency 'AFNetworking', '~> 2.3' 39 | end 40 | -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // DFContinuousForceTouchGestureRecognizer 4 | // 5 | // Created by Daniel Fogg on 9/30/15. 6 | // Copyright © 2015 Daniel J Fogg. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @interface AppDelegate () 12 | 13 | @end 14 | 15 | @implementation AppDelegate 16 | 17 | 18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 19 | // Override point for customization after application launch. 20 | return YES; 21 | } 22 | 23 | - (void)applicationWillResignActive:(UIApplication *)application { 24 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 25 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 26 | } 27 | 28 | - (void)applicationDidEnterBackground:(UIApplication *)application { 29 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 30 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 31 | } 32 | 33 | - (void)applicationWillEnterForeground:(UIApplication *)application { 34 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 35 | } 36 | 37 | - (void)applicationDidBecomeActive:(UIApplication *)application { 38 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 39 | } 40 | 41 | - (void)applicationWillTerminate:(UIApplication *)application { 42 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 43 | } 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Pods-DFContinuousForceTouchGestureRecognizer_Tests-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2015 Daniel Fogg <dan@inmoji.com> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | Title 38 | DFContinuousForceTouchGestureRecognizer 39 | Type 40 | PSGroupSpecifier 41 | 42 | 43 | FooterText 44 | Generated by CocoaPods - http://cocoapods.org 45 | Title 46 | 47 | Type 48 | PSGroupSpecifier 49 | 50 | 51 | StringsTable 52 | Acknowledgements 53 | Title 54 | Acknowledgements 55 | 56 | 57 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Pods-DFContinuousForceTouchGestureRecognizer_Example-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2015 Daniel Fogg <dan@inmoji.com> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | Title 38 | DFContinuousForceTouchGestureRecognizer 39 | Type 40 | PSGroupSpecifier 41 | 42 | 43 | FooterText 44 | Generated by CocoaPods - http://cocoapods.org 45 | Title 46 | 47 | Type 48 | PSGroupSpecifier 49 | 50 | 51 | StringsTable 52 | Acknowledgements 53 | Title 54 | Acknowledgements 55 | 56 | 57 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/DFContinuousForceTouchGestureRecognizer.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 66 | 67 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/xcuserdata/dfogg.xcuserdatad/xcschemes/Pods-DFContinuousForceTouchGestureRecognizer_Tests.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 66 | 67 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/xcuserdata/dfogg.xcuserdatad/xcschemes/Pods-DFContinuousForceTouchGestureRecognizer_Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 66 | 67 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Pods-DFContinuousForceTouchGestureRecognizer_Tests-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 6 | 7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 8 | 9 | install_framework() 10 | { 11 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 12 | local source="${BUILT_PRODUCTS_DIR}/$1" 13 | else 14 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 15 | fi 16 | 17 | local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 18 | 19 | if [ -L "${source}" ]; then 20 | echo "Symlinked..." 21 | source="$(readlink "${source}")" 22 | fi 23 | 24 | # use filter instead of exclude so missing patterns dont' throw errors 25 | echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 26 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 27 | 28 | # Resign the code if required by the build settings to avoid unstable apps 29 | code_sign_if_enabled "${destination}/$(basename "$1")" 30 | 31 | # Embed linked Swift runtime libraries 32 | local basename 33 | basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})" 34 | local swift_runtime_libs 35 | swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 36 | for lib in $swift_runtime_libs; do 37 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 38 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 39 | code_sign_if_enabled "${destination}/${lib}" 40 | done 41 | } 42 | 43 | # Signs a framework with the provided identity 44 | code_sign_if_enabled() { 45 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 46 | # Use the current code_sign_identitiy 47 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 48 | echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements \"$1\"" 49 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" 50 | fi 51 | } 52 | 53 | 54 | if [[ "$CONFIGURATION" == "Debug" ]]; then 55 | install_framework 'Pods-DFContinuousForceTouchGestureRecognizer_Tests/DFContinuousForceTouchGestureRecognizer.framework' 56 | fi 57 | if [[ "$CONFIGURATION" == "Release" ]]; then 58 | install_framework 'Pods-DFContinuousForceTouchGestureRecognizer_Tests/DFContinuousForceTouchGestureRecognizer.framework' 59 | fi 60 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Pods-DFContinuousForceTouchGestureRecognizer_Example-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 6 | 7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 8 | 9 | install_framework() 10 | { 11 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 12 | local source="${BUILT_PRODUCTS_DIR}/$1" 13 | else 14 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 15 | fi 16 | 17 | local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 18 | 19 | if [ -L "${source}" ]; then 20 | echo "Symlinked..." 21 | source="$(readlink "${source}")" 22 | fi 23 | 24 | # use filter instead of exclude so missing patterns dont' throw errors 25 | echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 26 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 27 | 28 | # Resign the code if required by the build settings to avoid unstable apps 29 | code_sign_if_enabled "${destination}/$(basename "$1")" 30 | 31 | # Embed linked Swift runtime libraries 32 | local basename 33 | basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})" 34 | local swift_runtime_libs 35 | swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 36 | for lib in $swift_runtime_libs; do 37 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 38 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 39 | code_sign_if_enabled "${destination}/${lib}" 40 | done 41 | } 42 | 43 | # Signs a framework with the provided identity 44 | code_sign_if_enabled() { 45 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 46 | # Use the current code_sign_identitiy 47 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 48 | echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements \"$1\"" 49 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" 50 | fi 51 | } 52 | 53 | 54 | if [[ "$CONFIGURATION" == "Debug" ]]; then 55 | install_framework 'Pods-DFContinuousForceTouchGestureRecognizer_Example/DFContinuousForceTouchGestureRecognizer.framework' 56 | fi 57 | if [[ "$CONFIGURATION" == "Release" ]]; then 58 | install_framework 'Pods-DFContinuousForceTouchGestureRecognizer_Example/DFContinuousForceTouchGestureRecognizer.framework' 59 | fi 60 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/xcuserdata/dfogg.xcuserdatad/xcschemes/DFContinuousForceTouchGestureRecognizer-DFContinuousForceTouchGestureRecognizer.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 66 | 67 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /Pod/Classes/DFContinuousForceTouchGestureRecognizer.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIContinuousForceTouchGestureRecognizer.h 3 | // 4 | // Created by Daniel Fogg on 9/29/15. 5 | // Copyright © 2015 Daniel Fogg. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @class DFContinuousForceTouchGestureRecognizer; 11 | 12 | @protocol DFContinuousForceTouchDelegate 13 | 14 | // Force touch was recognized according to the thresholds set by baseForceTouchPressure, triggeringForceTouchPressure, and forceTouchDelay 15 | - (void) forceTouchRecognized:(DFContinuousForceTouchGestureRecognizer*)recognizer; 16 | 17 | @optional 18 | // Force touch started happening. Note that this is not necessary the moment when all touches started happening, just the moment when the first touch occurred with at least a force of baseForceTouchPressure 19 | - (void) forceTouchRecognizer:(DFContinuousForceTouchGestureRecognizer*)recognizer didStartWithForce:(CGFloat)force maxForce:(CGFloat)maxForce; 20 | 21 | // Force touch movement happening. This is only called if forceTouchDidStartWithForce had been called previously 22 | - (void) forceTouchRecognizer:(DFContinuousForceTouchGestureRecognizer*)recognizer didMoveWithForce:(CGFloat)force maxForce:(CGFloat)maxForce; 23 | 24 | // Force touch was cancelled. This is only called if forceTouchDidStartWithForce had been called previously 25 | - (void) forceTouchRecognizer:(DFContinuousForceTouchGestureRecognizer*)recognizer didCancelWithForce:(CGFloat)force maxForce:(CGFloat)maxForce; 26 | 27 | // Force touch ended. This is only called if forceTouchDidStartWithForce had been called previously 28 | - (void) forceTouchRecognizer:(DFContinuousForceTouchGestureRecognizer*)recognizer didEndWithForce:(CGFloat)force maxForce:(CGFloat)maxForce; 29 | 30 | // Force touch timed out. See notes about the timeout property below. This is only called if forceTouchDidStartWithForce had been called previously 31 | - (void) forceTouchDidTimeout:(DFContinuousForceTouchGestureRecognizer*)recognizer; 32 | 33 | 34 | @end 35 | 36 | 37 | @interface DFContinuousForceTouchGestureRecognizer : UIGestureRecognizer 38 | 39 | // The lowest pressuare at which a force touch will begin to be detected, 40 | // anything lower is a normal press and will not trigger force touch logic 41 | // Defaults to 1.0f on a scale from 0.0f to 6.667f; 42 | @property(nonatomic, assign) CGFloat baseForceTouchPressure; 43 | 44 | // The pressure at which a force touch will be triggered 45 | // Defaults to 2.5f on a scale from 0.0f to 6.667f; 46 | @property(nonatomic, assign) CGFloat triggeringForceTouchPressure; 47 | 48 | // The delay in seconds after which, if the baseForceTouchPressure or greater is 49 | // still being applied will recognize the force touch 50 | // Defaults to 0.5f (half a second) 51 | @property(nonatomic, assign) CGFloat forceTouchDelay; 52 | 53 | // The timeout in seconds after which will fail the gesture recognizer. It fires only if a touch event 54 | // is not received again after forceTouchDidStartWithForce or forceTouchDidMoveWithForce is called. 55 | // 56 | // When this occurs forceTouchDidTimeout is called and the state is set to UIGestureRecognizerStateFailed. 57 | // Defaults to 1.5f; 58 | // 59 | // This comes in handy when you have a view inside a scroll view and the if the user drags to scroll the 60 | // view this gesture recognizer will not get its touchesCancelled or touchesEnded methods called 61 | @property(nonatomic, assign) CGFloat timeout; 62 | 63 | // Set this delegate to get continuous feedback on pressure changes 64 | @property(nonatomic, weak) id forceTouchDelegate; 65 | 66 | 67 | @end 68 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DFContinuousForceTouchGestureRecognizer 2 | 3 | [![Version](https://img.shields.io/cocoapods/v/DFContinuousForceTouchGestureRecognizer.svg?style=flat)](http://cocoapods.org/pods/DFContinuousForceTouchGestureRecognizer) 4 | [![License](https://img.shields.io/cocoapods/l/DFContinuousForceTouchGestureRecognizer.svg?style=flat)](http://cocoapods.org/pods/DFContinuousForceTouchGestureRecognizer) 5 | [![Platform](https://img.shields.io/cocoapods/p/DFContinuousForceTouchGestureRecognizer.svg?style=flat)](http://cocoapods.org/pods/DFContinuousForceTouchGestureRecognizer) 6 | 7 | ## Requirements 8 | 9 | iOS 9 10 | 11 | ## Installation 12 | 13 | DFContinuousForceTouchGestureRecognizer is available through [CocoaPods](http://cocoapods.org). To install 14 | it, simply add the following line to your Podfile: 15 | 16 | ```ruby 17 | pod ‘DFContinuousForceTouchGestureRecognizer’, '~> 0.1.0’ 18 | ``` 19 | 20 | ## Author 21 | 22 | Daniel Fogg 23 | 24 | ## License 25 | 26 | DFContinuousForceTouchGestureRecognizer is available under the MIT license. See the LICENSE file for more info. 27 | 28 | 29 | # DFContinuousForceTouchGestureRecognizer 30 | iOS Force Touch gesture recognizer that will stream force updates to the delegate for the user's finger pressure changes. It gives you the capability to detect force touch and monitor pressure changes on a view in order to adapt your ui for an added dimension of interaction. 31 | 32 | This is only useful for running on a physical device that supports force touch. 33 | 34 | To see this in action run the sample program on a device that supports force touch and press on the elephant with force. 35 | 36 | ## Usage 37 | 38 | Create a `DFContinuousForceTouchGestureRecognizer`, add it to a view like any other gesture recognizer: 39 | 40 | DFContinuousForceTouchGestureRecognizer* forceTouchRecognizer = [[DFContinuousForceTouchGestureRecognizer alloc] init]; 41 | forceTouchRecognizer.forceTouchDelegate = self; 42 | [myView addGestureRecognizer:forceTouchRecognizer]; 43 | 44 | ... 45 | 46 | Implement the `DFContinuousForceTouchDelegate` protocol to receive updates as the user's force changes: 47 | 48 | #pragma DFContinuousForceTouchDelegate 49 | 50 | - (void) forceTouchRecognized:(DFContinuousForceTouchGestureRecognizer*)recognizer { 51 | //trigger force touch action 52 | } 53 | 54 | - (void) forceTouchRecognizer:(DFContinuousForceTouchGestureRecognizer*)recognizer didStartWithForce:(CGFloat)force maxForce:(CGFloat)maxForce { 55 | //do something cool 56 | } 57 | 58 | - (void) forceTouchRecognizer:(DFContinuousForceTouchGestureRecognizer*)recognizer didMoveWithForce:(CGFloat)force maxForce:(CGFloat)maxForce { 59 | //do something cool 60 | } 61 | 62 | - (void) forceTouchRecognizer:(DFContinuousForceTouchGestureRecognizer*)recognizer didCancelWithForce:(CGFloat)force maxForce:(CGFloat)maxForce { 63 | //reset cool effects 64 | } 65 | 66 | - (void) forceTouchRecognizer:(DFContinuousForceTouchGestureRecognizer*)recognizer didEndWithForce:(CGFloat)force maxForce:(CGFloat)maxForce { 67 | //reset cool effects 68 | } 69 | 70 | - (void) forceTouchDidTimeout:(DFContinuousForceTouchGestureRecognizer*)recognizer { 71 | //reset cool effects 72 | } 73 | 74 | Customizing the feel of it can be done through these configuration properties: 75 | 76 | //how to long to tracking force touches before calling forceTouchRecognized 77 | forceTouchRecognizer.forceTouchDelay = 0.2f; 78 | 79 | //make it moderately hard to start tracking force touches 80 | forceTouchRecognizer.baseForceTouchPressure = 3.0f; 81 | 82 | //make it really hard to trigger the force touches 83 | forceTouchRecognizer.triggeringForceTouchPressure = 6.0f; 84 | 85 | See `ViewController.m` for sample usage -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer.xcodeproj/xcshareddata/xcschemes/DFContinuousForceTouchGestureRecognizer-Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 53 | 54 | 64 | 66 | 72 | 73 | 74 | 75 | 76 | 77 | 83 | 85 | 91 | 92 | 93 | 94 | 96 | 97 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Pods-DFContinuousForceTouchGestureRecognizer_Tests-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 5 | 6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 7 | > "$RESOURCES_TO_COPY" 8 | 9 | XCASSET_FILES=() 10 | 11 | realpath() { 12 | DIRECTORY="$(cd "${1%/*}" && pwd)" 13 | FILENAME="${1##*/}" 14 | echo "$DIRECTORY/$FILENAME" 15 | } 16 | 17 | install_resource() 18 | { 19 | case $1 in 20 | *.storyboard) 21 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" 22 | ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" 23 | ;; 24 | *.xib) 25 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" 26 | ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" 27 | ;; 28 | *.framework) 29 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 30 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 31 | echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 32 | rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 33 | ;; 34 | *.xcdatamodel) 35 | echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" 36 | xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" 37 | ;; 38 | *.xcdatamodeld) 39 | echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" 40 | xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" 41 | ;; 42 | *.xcmappingmodel) 43 | echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" 44 | xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" 45 | ;; 46 | *.xcassets) 47 | ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") 48 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 49 | ;; 50 | /*) 51 | echo "$1" 52 | echo "$1" >> "$RESOURCES_TO_COPY" 53 | ;; 54 | *) 55 | echo "${PODS_ROOT}/$1" 56 | echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" 57 | ;; 58 | esac 59 | } 60 | 61 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 62 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 63 | if [[ "${ACTION}" == "install" ]]; then 64 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 65 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 66 | fi 67 | rm -f "$RESOURCES_TO_COPY" 68 | 69 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 70 | then 71 | case "${TARGETED_DEVICE_FAMILY}" in 72 | 1,2) 73 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 74 | ;; 75 | 1) 76 | TARGET_DEVICE_ARGS="--target-device iphone" 77 | ;; 78 | 2) 79 | TARGET_DEVICE_ARGS="--target-device ipad" 80 | ;; 81 | *) 82 | TARGET_DEVICE_ARGS="--target-device mac" 83 | ;; 84 | esac 85 | 86 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 87 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 88 | while read line; do 89 | if [[ $line != "`realpath $PODS_ROOT`*" ]]; then 90 | XCASSET_FILES+=("$line") 91 | fi 92 | done <<<"$OTHER_XCASSETS" 93 | 94 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 95 | fi 96 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Pods-DFContinuousForceTouchGestureRecognizer_Example-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 5 | 6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 7 | > "$RESOURCES_TO_COPY" 8 | 9 | XCASSET_FILES=() 10 | 11 | realpath() { 12 | DIRECTORY="$(cd "${1%/*}" && pwd)" 13 | FILENAME="${1##*/}" 14 | echo "$DIRECTORY/$FILENAME" 15 | } 16 | 17 | install_resource() 18 | { 19 | case $1 in 20 | *.storyboard) 21 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" 22 | ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" 23 | ;; 24 | *.xib) 25 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" 26 | ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" 27 | ;; 28 | *.framework) 29 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 30 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 31 | echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 32 | rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 33 | ;; 34 | *.xcdatamodel) 35 | echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" 36 | xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" 37 | ;; 38 | *.xcdatamodeld) 39 | echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" 40 | xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" 41 | ;; 42 | *.xcmappingmodel) 43 | echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" 44 | xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" 45 | ;; 46 | *.xcassets) 47 | ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") 48 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 49 | ;; 50 | /*) 51 | echo "$1" 52 | echo "$1" >> "$RESOURCES_TO_COPY" 53 | ;; 54 | *) 55 | echo "${PODS_ROOT}/$1" 56 | echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" 57 | ;; 58 | esac 59 | } 60 | 61 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 62 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 63 | if [[ "${ACTION}" == "install" ]]; then 64 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 65 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 66 | fi 67 | rm -f "$RESOURCES_TO_COPY" 68 | 69 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 70 | then 71 | case "${TARGETED_DEVICE_FAMILY}" in 72 | 1,2) 73 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 74 | ;; 75 | 1) 76 | TARGET_DEVICE_ARGS="--target-device iphone" 77 | ;; 78 | 2) 79 | TARGET_DEVICE_ARGS="--target-device ipad" 80 | ;; 81 | *) 82 | TARGET_DEVICE_ARGS="--target-device mac" 83 | ;; 84 | esac 85 | 86 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 87 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 88 | while read line; do 89 | if [[ $line != "`realpath $PODS_ROOT`*" ]]; then 90 | XCASSET_FILES+=("$line") 91 | fi 92 | done <<<"$OTHER_XCASSETS" 93 | 94 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 95 | fi 96 | -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // DFContinuousForceTouchGestureRecognizer 4 | // 5 | // Created by Daniel Fogg on 9/30/15. 6 | // Copyright © 2015 Daniel J Fogg. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | #import 11 | 12 | @interface ViewController () 13 | 14 | @property (weak, nonatomic) IBOutlet UIImageView *imageView; 15 | @property (weak, nonatomic) IBOutlet UIButton *button; 16 | @property (strong, nonatomic) DFContinuousForceTouchGestureRecognizer* imageForceTouchRecognizer; 17 | @property (strong, nonatomic) DFContinuousForceTouchGestureRecognizer* buttonForceTouchRecognizer; 18 | @property (strong, nonatomic) UITapGestureRecognizer* tapGestureRecognizer; 19 | @end 20 | 21 | @implementation ViewController 22 | 23 | - (void)viewDidLoad { 24 | [super viewDidLoad]; 25 | 26 | _imageForceTouchRecognizer = [[DFContinuousForceTouchGestureRecognizer alloc] init]; 27 | _imageForceTouchRecognizer.timeout = 0.5f; 28 | _imageForceTouchRecognizer.forceTouchDelay = 0.2f; 29 | _imageForceTouchRecognizer.baseForceTouchPressure = 3.0f; 30 | _imageForceTouchRecognizer.triggeringForceTouchPressure = 6.0f; 31 | _imageForceTouchRecognizer.forceTouchDelegate = self; 32 | 33 | _buttonForceTouchRecognizer = [[DFContinuousForceTouchGestureRecognizer alloc] init]; 34 | _buttonForceTouchRecognizer.timeout = 0.5f; 35 | _buttonForceTouchRecognizer.forceTouchDelay = 0.2f; 36 | _buttonForceTouchRecognizer.baseForceTouchPressure = 3.0f; 37 | _buttonForceTouchRecognizer.triggeringForceTouchPressure = 6.0f; 38 | _buttonForceTouchRecognizer.forceTouchDelegate = self; 39 | 40 | //here to demonstrate how this works alonside a tap gesture recognizer 41 | _tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)]; 42 | 43 | [self.imageView addGestureRecognizer:_tapGestureRecognizer]; 44 | [self.imageView addGestureRecognizer:_imageForceTouchRecognizer]; 45 | 46 | [self.button addGestureRecognizer:_buttonForceTouchRecognizer]; 47 | [self.button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside]; 48 | // Do any additional setup after loading the view, typically from a nib. 49 | } 50 | 51 | - (void)didReceiveMemoryWarning { 52 | [super didReceiveMemoryWarning]; 53 | // Dispose of any resources that can be recreated. 54 | } 55 | 56 | #pragma mark - 57 | #pragma UIButton target selector 58 | 59 | - (void) buttonTapped:(id)sender { 60 | dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 61 | [self showAlertTitle:@"Button Tap" message:@"YEAH!!"]; 62 | }); 63 | } 64 | 65 | #pragma mark - 66 | #pragma UITapGestureRecognizer target selector 67 | 68 | - (void) tapped:(id)sender { 69 | dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 70 | [self showAlertTitle:@"Image Tap" message:@"YEAH!!"]; 71 | }); 72 | } 73 | 74 | #pragma mark - 75 | #pragma UIContinuousForceTouchDelegate 76 | 77 | //required 78 | - (void) forceTouchRecognized:(DFContinuousForceTouchGestureRecognizer*)recognizer { 79 | if(recognizer == _imageForceTouchRecognizer) { 80 | self.imageView.transform = CGAffineTransformIdentity; 81 | [self.imageView setNeedsDisplay]; 82 | dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 83 | [self showAlertTitle:@"Force Touch Image" message:@"YEAH!!"]; 84 | }); 85 | } else { 86 | self.button.transform = CGAffineTransformIdentity; 87 | [self.button setNeedsDisplay]; 88 | dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 89 | [self showAlertTitle:@"Force Touch Button" message:@"YEAH!!"]; 90 | }); 91 | } 92 | } 93 | 94 | //optional 95 | - (void) forceTouchRecognizer:(DFContinuousForceTouchGestureRecognizer*)recognizer didStartWithForce:(CGFloat)force maxForce:(CGFloat)maxForce { 96 | CGFloat transformDelta = 1.0f + ((force/maxForce) / 3.0f); 97 | if(recognizer == _imageForceTouchRecognizer) { 98 | self.imageView.transform = CGAffineTransformMakeScale(transformDelta, transformDelta); 99 | [self.imageView setNeedsDisplay]; 100 | } else { 101 | self.button.transform = CGAffineTransformMakeScale(transformDelta, transformDelta); 102 | [self.button setNeedsDisplay]; 103 | } 104 | } 105 | 106 | - (void) forceTouchRecognizer:(DFContinuousForceTouchGestureRecognizer*)recognizer didMoveWithForce:(CGFloat)force maxForce:(CGFloat)maxForce { 107 | CGFloat transformDelta = 1.0f + ((force/maxForce) / 3.0f); 108 | if(recognizer == _imageForceTouchRecognizer) { 109 | self.imageView.transform = CGAffineTransformMakeScale(transformDelta, transformDelta); 110 | [self.imageView setNeedsDisplay]; 111 | } else { 112 | self.button.transform = CGAffineTransformMakeScale(transformDelta, transformDelta); 113 | [self.button setNeedsDisplay]; 114 | } 115 | } 116 | 117 | - (void) forceTouchRecognizer:(DFContinuousForceTouchGestureRecognizer*)recognizer didCancelWithForce:(CGFloat)force maxForce:(CGFloat)maxForce { 118 | if(recognizer == _imageForceTouchRecognizer) { 119 | self.imageView.transform = CGAffineTransformIdentity; 120 | [self.imageView setNeedsDisplay]; 121 | } else { 122 | self.button.transform = CGAffineTransformIdentity; 123 | [self.button setNeedsDisplay]; 124 | } 125 | 126 | } 127 | 128 | - (void) forceTouchRecognizer:(DFContinuousForceTouchGestureRecognizer*)recognizer didEndWithForce:(CGFloat)force maxForce:(CGFloat)maxForce { 129 | if(recognizer == _imageForceTouchRecognizer) { 130 | self.imageView.transform = CGAffineTransformIdentity; 131 | [self.imageView setNeedsDisplay]; 132 | } else { 133 | self.button.transform = CGAffineTransformIdentity; 134 | [self.button setNeedsDisplay]; 135 | } 136 | } 137 | 138 | - (void) forceTouchDidTimeout:(DFContinuousForceTouchGestureRecognizer*)recognizer { 139 | if(recognizer == _imageForceTouchRecognizer) { 140 | self.imageView.transform = CGAffineTransformIdentity; 141 | [self.imageView setNeedsDisplay]; 142 | } else { 143 | self.button.transform = CGAffineTransformIdentity; 144 | [self.button setNeedsDisplay]; 145 | } 146 | } 147 | 148 | #pragma helper 149 | 150 | - (void) showAlertTitle:(NSString*) msg message:(NSString*)title { 151 | UIAlertController* alertController = [UIAlertController alertControllerWithTitle:msg message:title preferredStyle:UIAlertControllerStyleAlert]; 152 | UIAlertAction *okAction = [UIAlertAction 153 | actionWithTitle:@"OK" 154 | style:UIAlertActionStyleDefault 155 | handler:NULL]; 156 | [alertController addAction:okAction]; 157 | [self presentViewController:alertController animated:YES completion:nil]; 158 | } 159 | 160 | @end 161 | -------------------------------------------------------------------------------- /Pod/Classes/DFContinuousForceTouchGestureRecognizer.m: -------------------------------------------------------------------------------- 1 | // 2 | // DFContinuousForceTouchGestureRecognizer.m 3 | // 4 | // Created by Daniel Fogg on 9/29/15. 5 | // Copyright © 2015 Daniel Fogg. All rights reserved. 6 | // 7 | 8 | #import "DFContinuousForceTouchGestureRecognizer.h" 9 | #import 10 | 11 | static CGFloat const kForceTouchBaseDefaultPressureThreshold = 1.0f; 12 | static CGFloat const kForceTouchDefaultTriggerPressureThreshold = 2.5f; 13 | static CGFloat const kForceTouchDefaultDelay = 0.5f; 14 | static CGFloat const kDefaultTouchTimeout = 1.5f; 15 | 16 | 17 | @interface DFContinuousForceTouchGestureRecognizer() 18 | 19 | @property(nonatomic, assign) NSTimeInterval gestureStartTime; 20 | @property(nonatomic, assign) BOOL forceTouchFired; 21 | @property(nonatomic, assign) BOOL forceTouchInitialTouchDetect; 22 | @property(nonatomic, assign) NSInteger initialForce; 23 | @property(nonatomic, strong) NSTimer* forceTouchTimedTrigger; 24 | 25 | // Its possible that the touches end will never get called if the view is scrolled 26 | // inside a scroll view, so timeout the end of the gesture 27 | @property(nonatomic, strong) NSTimer* lastMovedTimeoutTimer; 28 | 29 | @end 30 | 31 | @implementation DFContinuousForceTouchGestureRecognizer 32 | 33 | - (instancetype) init { 34 | self = [super init]; 35 | if(self) { 36 | [self commonCFTInit]; 37 | } 38 | return self; 39 | } 40 | 41 | - (instancetype) initWithTarget:(id)target action:(SEL)action { 42 | self = [super initWithTarget:target action:action]; 43 | if(self) { 44 | [self commonCFTInit]; 45 | } 46 | return self; 47 | } 48 | 49 | - (void) commonCFTInit { 50 | self.baseForceTouchPressure = kForceTouchBaseDefaultPressureThreshold; 51 | self.triggeringForceTouchPressure = kForceTouchDefaultTriggerPressureThreshold; 52 | self.forceTouchDelay = kForceTouchDefaultDelay; 53 | self.timeout = kDefaultTouchTimeout; 54 | } 55 | 56 | - (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 57 | [super touchesBegan:touches withEvent:event]; 58 | 59 | _forceTouchInitialTouchDetect = NO; 60 | self.state = UIGestureRecognizerStatePossible; 61 | 62 | // for(UITouch* aTouch in touches) { 63 | // NSLog(@"Began Force: %f of %f", aTouch.force, aTouch.maximumPossibleForce); 64 | // } 65 | 66 | UITouch* aTouch = touches.anyObject; 67 | 68 | if(aTouch.force > kForceTouchBaseDefaultPressureThreshold) { 69 | [self forceTouchStartedWithTouch:aTouch]; 70 | } 71 | 72 | [self startMovedTimeoutTimer]; 73 | } 74 | 75 | - (void)reset { 76 | [super reset]; 77 | 78 | _forceTouchFired = NO; 79 | _gestureStartTime = 0; 80 | _initialForce = 0.0f; 81 | [self endForceTouchTimer]; 82 | 83 | // Do NOT reset this state or the timeout logic will not function since reset can be called before the timeout fires 84 | //[self endMovedTimeoutTimer]; 85 | //_forceTouchInitialTouchDetect = NO; 86 | } 87 | 88 | - (void) touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event 89 | { 90 | [super touchesCancelled:touches withEvent:event]; 91 | 92 | [self endMovedTimeoutTimer]; 93 | [self endForceTouchTimer]; 94 | 95 | // for(UITouch* aTouch in touches) { 96 | // NSLog(@"Cancelled Force: %f of %f", aTouch.force, aTouch.maximumPossibleForce); 97 | // } 98 | 99 | UITouch* aTouch = touches.anyObject; 100 | if(_forceTouchDelegate && _forceTouchInitialTouchDetect && [_forceTouchDelegate respondsToSelector:@selector(forceTouchRecognizer:didCancelWithForce:maxForce:)]) { 101 | [_forceTouchDelegate forceTouchRecognizer:self didCancelWithForce:aTouch.force maxForce:aTouch.maximumPossibleForce]; 102 | } 103 | 104 | _forceTouchInitialTouchDetect = NO; 105 | _forceTouchFired = NO; 106 | 107 | self.state = UIGestureRecognizerStateFailed; 108 | } 109 | 110 | - (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 111 | { 112 | [super touchesEnded:touches withEvent:event]; 113 | 114 | [self endMovedTimeoutTimer]; 115 | [self endForceTouchTimer]; 116 | 117 | // for(UITouch* aTouch in touches) { 118 | // NSLog(@"End Force: %f of %f", aTouch.force, aTouch.maximumPossibleForce); 119 | // } 120 | 121 | UITouch* aTouch = touches.anyObject; 122 | if(_forceTouchInitialTouchDetect) { 123 | self.state = UIGestureRecognizerStateRecognized; 124 | if(_forceTouchDelegate && [_forceTouchDelegate respondsToSelector:@selector(forceTouchRecognizer:didEndWithForce:maxForce:)]) { 125 | [_forceTouchDelegate forceTouchRecognizer:self didEndWithForce:aTouch.force maxForce:aTouch.maximumPossibleForce]; 126 | } 127 | } else { 128 | self.state = UIGestureRecognizerStateCancelled; 129 | } 130 | 131 | _forceTouchInitialTouchDetect = NO; 132 | _forceTouchFired = NO; 133 | } 134 | 135 | - (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 136 | 137 | [self endMovedTimeoutTimer]; 138 | 139 | [super touchesMoved:touches withEvent:event]; 140 | 141 | if (self.state == UIGestureRecognizerStateFailed) { 142 | return; 143 | } 144 | 145 | // Do NOT set this state or other recognizers such as tap or long press won't trigger 146 | //self.state = UIGestureRecognizerStateChanged; 147 | 148 | CGPoint pointInView = [touches.anyObject locationInView:self.view]; 149 | // NSLog(@"view_pt(%f,%f)", pointInView.x, pointInView.y); 150 | if(![self.view pointInside:pointInView withEvent:event]) { 151 | self.state = UIGestureRecognizerStateFailed; 152 | UITouch* aTouch = touches.anyObject; 153 | if(_forceTouchDelegate && _forceTouchInitialTouchDetect && [_forceTouchDelegate respondsToSelector:@selector(forceTouchRecognizer:didEndWithForce:maxForce:)]) { 154 | [_forceTouchDelegate forceTouchRecognizer:self didEndWithForce:aTouch.force maxForce:aTouch.maximumPossibleForce]; 155 | } 156 | return; 157 | } 158 | 159 | UITouch* aTouch = touches.anyObject; 160 | 161 | // NSLog(@"Moved Force: %f of %f", aTouch.force, aTouch.maximumPossibleForce); 162 | 163 | if(_forceTouchInitialTouchDetect) { 164 | [self forceTouchUpdatedWithTouch:aTouch]; 165 | } else if(aTouch.force > 1.0f) { 166 | [self forceTouchStartedWithTouch:aTouch]; 167 | } 168 | 169 | [self startMovedTimeoutTimer]; 170 | } 171 | 172 | - (void) forceTouchStartedWithTouch:(UITouch*) touch { 173 | _forceTouchInitialTouchDetect = YES; 174 | _initialForce = touch.force; 175 | 176 | // Only start the force touch logic if the pressure is above the baseForceTouchPressure pressure 177 | if(_initialForce > self.baseForceTouchPressure) { 178 | [self startForceTouchTimer]; 179 | } 180 | } 181 | 182 | - (void) startMovedTimeoutTimer { 183 | [self endMovedTimeoutTimer]; 184 | _lastMovedTimeoutTimer = [NSTimer scheduledTimerWithTimeInterval:self.timeout target:self selector:@selector(timeout:) userInfo:nil repeats:NO]; 185 | } 186 | 187 | - (void) endMovedTimeoutTimer { 188 | if(_lastMovedTimeoutTimer) { 189 | [_lastMovedTimeoutTimer invalidate]; 190 | _lastMovedTimeoutTimer = nil; 191 | } 192 | } 193 | 194 | - (void) startForceTouchTimer { 195 | [self endForceTouchTimer]; 196 | _forceTouchTimedTrigger = [NSTimer scheduledTimerWithTimeInterval:self.forceTouchDelay target:self selector:@selector(forceTouchFired:) userInfo:nil repeats:NO]; 197 | } 198 | 199 | - (void) endForceTouchTimer { 200 | if(_forceTouchTimedTrigger) { 201 | [_forceTouchTimedTrigger invalidate]; 202 | _forceTouchTimedTrigger = nil; 203 | } 204 | } 205 | 206 | - (void) forceTouchUpdatedWithTouch:(UITouch*) touch { 207 | 208 | // Its possible that the user started their tap below the baseForceTouchPressure pressure threshold and then 209 | // increased their pressure to trigger a force touch. 210 | // If that happened then start the force touch detection 211 | if(_initialForce < self.triggeringForceTouchPressure && touch.force >= self.triggeringForceTouchPressure && !_forceTouchFired) { 212 | [self forceTouchFired:self]; 213 | } 214 | 215 | if(_forceTouchDelegate && [_forceTouchDelegate respondsToSelector:@selector(forceTouchRecognizer:didMoveWithForce:maxForce:)]) { 216 | [_forceTouchDelegate forceTouchRecognizer:self didMoveWithForce:touch.force maxForce:touch.maximumPossibleForce]; 217 | } 218 | } 219 | 220 | - (void) timeout:(id)sender { 221 | self.state = UIGestureRecognizerStateFailed; 222 | if(_forceTouchDelegate && _forceTouchInitialTouchDetect && [_forceTouchDelegate respondsToSelector:@selector(forceTouchDidTimeout:)]) { 223 | [_forceTouchDelegate forceTouchDidTimeout:self]; 224 | } 225 | } 226 | 227 | - (void) forceTouchFired:(id)sender { 228 | _forceTouchFired = YES; 229 | 230 | [self endMovedTimeoutTimer]; 231 | [self endForceTouchTimer]; 232 | 233 | // Do NOT set this state to UIGestureRecognizerStateRecognized or the recognizer will reset and 234 | // force pressure updates will cease. 235 | // Instead use a delegate callback to signify that the desired force touch gesture was performed 236 | // and keep the events streaming with pressure updates 237 | //self.state = UIGestureRecognizerStateRecognized; 238 | 239 | if(_forceTouchDelegate) { 240 | [_forceTouchDelegate forceTouchRecognized:self]; 241 | } 242 | } 243 | 244 | @end 245 | -------------------------------------------------------------------------------- /Example/DFContinuousForceTouchGestureRecognizer.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; }; 11 | 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; }; 12 | 6003F592195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; }; 13 | 6003F59A195388D20070C39A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F599195388D20070C39A /* main.m */; }; 14 | 6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F5AF195388D20070C39A /* XCTest.framework */; }; 15 | 6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; }; 16 | 6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; }; 17 | 6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5B8195388D20070C39A /* InfoPlist.strings */; }; 18 | 6003F5BC195388D20070C39A /* Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5BB195388D20070C39A /* Tests.m */; }; 19 | A170114A572E2CABECBF99B8 /* Pods_DFContinuousForceTouchGestureRecognizer_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C542B0279A2F1E3E8AD635EE /* Pods_DFContinuousForceTouchGestureRecognizer_Tests.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 20 | D40BE5C7D2BF8172B7A54A06 /* Pods_DFContinuousForceTouchGestureRecognizer_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7753A01D64AE98B24A42C917 /* Pods_DFContinuousForceTouchGestureRecognizer_Example.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 21 | F88379821BCF36530059B6E6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F88379771BCF36530059B6E6 /* AppDelegate.m */; settings = {ASSET_TAGS = (); }; }; 22 | F88379831BCF36530059B6E6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F88379781BCF36530059B6E6 /* Assets.xcassets */; settings = {ASSET_TAGS = (); }; }; 23 | F88379841BCF36530059B6E6 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F883797A1BCF36530059B6E6 /* LaunchScreen.storyboard */; settings = {ASSET_TAGS = (); }; }; 24 | F88379851BCF36530059B6E6 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F883797C1BCF36530059B6E6 /* Main.storyboard */; settings = {ASSET_TAGS = (); }; }; 25 | F88379861BCF36530059B6E6 /* elephant.png in Resources */ = {isa = PBXBuildFile; fileRef = F883797E1BCF36530059B6E6 /* elephant.png */; settings = {ASSET_TAGS = (); }; }; 26 | F88379871BCF36530059B6E6 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = F883797F1BCF36530059B6E6 /* Info.plist */; settings = {ASSET_TAGS = (); }; }; 27 | F88379881BCF36530059B6E6 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F88379811BCF36530059B6E6 /* ViewController.m */; settings = {ASSET_TAGS = (); }; }; 28 | F883798B1BCF395F0059B6E6 /* DFContinuousForceTouchGestureRecognizer-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = F883798A1BCF395F0059B6E6 /* DFContinuousForceTouchGestureRecognizer-Info.plist */; settings = {ASSET_TAGS = (); }; }; 29 | /* End PBXBuildFile section */ 30 | 31 | /* Begin PBXContainerItemProxy section */ 32 | 6003F5B3195388D20070C39A /* PBXContainerItemProxy */ = { 33 | isa = PBXContainerItemProxy; 34 | containerPortal = 6003F582195388D10070C39A /* Project object */; 35 | proxyType = 1; 36 | remoteGlobalIDString = 6003F589195388D20070C39A; 37 | remoteInfo = DFContinuousForceTouchGestureRecognizer; 38 | }; 39 | /* End PBXContainerItemProxy section */ 40 | 41 | /* Begin PBXFileReference section */ 42 | 00C7874FD570249E32CB0FC3 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 43 | 234BB9E0B970B43AE8446FB4 /* Pods-DFContinuousForceTouchGestureRecognizer_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DFContinuousForceTouchGestureRecognizer_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Pods-DFContinuousForceTouchGestureRecognizer_Example.release.xcconfig"; sourceTree = ""; }; 44 | 3D23007B5DF2E30CBB8D5B7E /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 45 | 4FA301A6FACDCFA225259BBC /* Pods-DFContinuousForceTouchGestureRecognizer_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DFContinuousForceTouchGestureRecognizer_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Pods-DFContinuousForceTouchGestureRecognizer_Tests.release.xcconfig"; sourceTree = ""; }; 46 | 6003F58A195388D20070C39A /* DFContinuousForceTouchGestureRecognizer_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DFContinuousForceTouchGestureRecognizer_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 47 | 6003F58D195388D20070C39A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 48 | 6003F58F195388D20070C39A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 49 | 6003F591195388D20070C39A /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 50 | 6003F599195388D20070C39A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 51 | 6003F5AE195388D20070C39A /* DFContinuousForceTouchGestureRecognizer_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DFContinuousForceTouchGestureRecognizer_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 52 | 6003F5AF195388D20070C39A /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 53 | 6003F5B7195388D20070C39A /* Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Tests-Info.plist"; sourceTree = ""; }; 54 | 6003F5B9195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 55 | 6003F5BB195388D20070C39A /* Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Tests.m; sourceTree = ""; }; 56 | 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Tests-Prefix.pch"; sourceTree = ""; }; 57 | 639F86B08D7A4F69FEA30F2C /* Pods-DFContinuousForceTouchGestureRecognizer_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DFContinuousForceTouchGestureRecognizer_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Pods-DFContinuousForceTouchGestureRecognizer_Tests.debug.xcconfig"; sourceTree = ""; }; 58 | 7753A01D64AE98B24A42C917 /* Pods_DFContinuousForceTouchGestureRecognizer_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DFContinuousForceTouchGestureRecognizer_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 59 | 981BA63AA3B05A012EA31C34 /* Pods-DFContinuousForceTouchGestureRecognizer_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DFContinuousForceTouchGestureRecognizer_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Pods-DFContinuousForceTouchGestureRecognizer_Example.debug.xcconfig"; sourceTree = ""; }; 60 | 9D0F4FE9601985130B3DBC7E /* DFContinuousForceTouchGestureRecognizer.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = DFContinuousForceTouchGestureRecognizer.podspec; path = ../DFContinuousForceTouchGestureRecognizer.podspec; sourceTree = ""; }; 61 | C542B0279A2F1E3E8AD635EE /* Pods_DFContinuousForceTouchGestureRecognizer_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DFContinuousForceTouchGestureRecognizer_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 62 | F88379761BCF36530059B6E6 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 63 | F88379771BCF36530059B6E6 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 64 | F88379781BCF36530059B6E6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 65 | F883797B1BCF36530059B6E6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = LaunchScreen.storyboard; sourceTree = ""; }; 66 | F883797D1BCF36530059B6E6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Main.storyboard; sourceTree = ""; }; 67 | F883797E1BCF36530059B6E6 /* elephant.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = elephant.png; sourceTree = ""; }; 68 | F883797F1BCF36530059B6E6 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 69 | F88379801BCF36530059B6E6 /* ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; 70 | F88379811BCF36530059B6E6 /* ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 71 | F88379891BCF36BA0059B6E6 /* DFContinuousForceTouchGestureRecognizer-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "DFContinuousForceTouchGestureRecognizer-Prefix.pch"; sourceTree = ""; }; 72 | F883798A1BCF395F0059B6E6 /* DFContinuousForceTouchGestureRecognizer-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "DFContinuousForceTouchGestureRecognizer-Info.plist"; sourceTree = ""; }; 73 | /* End PBXFileReference section */ 74 | 75 | /* Begin PBXFrameworksBuildPhase section */ 76 | 6003F587195388D20070C39A /* Frameworks */ = { 77 | isa = PBXFrameworksBuildPhase; 78 | buildActionMask = 2147483647; 79 | files = ( 80 | 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */, 81 | 6003F592195388D20070C39A /* UIKit.framework in Frameworks */, 82 | 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */, 83 | D40BE5C7D2BF8172B7A54A06 /* Pods_DFContinuousForceTouchGestureRecognizer_Example.framework in Frameworks */, 84 | ); 85 | runOnlyForDeploymentPostprocessing = 0; 86 | }; 87 | 6003F5AB195388D20070C39A /* Frameworks */ = { 88 | isa = PBXFrameworksBuildPhase; 89 | buildActionMask = 2147483647; 90 | files = ( 91 | 6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */, 92 | 6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */, 93 | 6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */, 94 | A170114A572E2CABECBF99B8 /* Pods_DFContinuousForceTouchGestureRecognizer_Tests.framework in Frameworks */, 95 | ); 96 | runOnlyForDeploymentPostprocessing = 0; 97 | }; 98 | /* End PBXFrameworksBuildPhase section */ 99 | 100 | /* Begin PBXGroup section */ 101 | 05A408A74DF4466FBE178EFF /* Pods */ = { 102 | isa = PBXGroup; 103 | children = ( 104 | 981BA63AA3B05A012EA31C34 /* Pods-DFContinuousForceTouchGestureRecognizer_Example.debug.xcconfig */, 105 | 234BB9E0B970B43AE8446FB4 /* Pods-DFContinuousForceTouchGestureRecognizer_Example.release.xcconfig */, 106 | 639F86B08D7A4F69FEA30F2C /* Pods-DFContinuousForceTouchGestureRecognizer_Tests.debug.xcconfig */, 107 | 4FA301A6FACDCFA225259BBC /* Pods-DFContinuousForceTouchGestureRecognizer_Tests.release.xcconfig */, 108 | ); 109 | name = Pods; 110 | sourceTree = ""; 111 | }; 112 | 6003F581195388D10070C39A = { 113 | isa = PBXGroup; 114 | children = ( 115 | 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */, 116 | 6003F593195388D20070C39A /* Example for DFContinuousForceTouchGestureRecognizer */, 117 | 6003F5B5195388D20070C39A /* Tests */, 118 | 6003F58C195388D20070C39A /* Frameworks */, 119 | 6003F58B195388D20070C39A /* Products */, 120 | 05A408A74DF4466FBE178EFF /* Pods */, 121 | ); 122 | sourceTree = ""; 123 | }; 124 | 6003F58B195388D20070C39A /* Products */ = { 125 | isa = PBXGroup; 126 | children = ( 127 | 6003F58A195388D20070C39A /* DFContinuousForceTouchGestureRecognizer_Example.app */, 128 | 6003F5AE195388D20070C39A /* DFContinuousForceTouchGestureRecognizer_Tests.xctest */, 129 | ); 130 | name = Products; 131 | sourceTree = ""; 132 | }; 133 | 6003F58C195388D20070C39A /* Frameworks */ = { 134 | isa = PBXGroup; 135 | children = ( 136 | 6003F58D195388D20070C39A /* Foundation.framework */, 137 | 6003F58F195388D20070C39A /* CoreGraphics.framework */, 138 | 6003F591195388D20070C39A /* UIKit.framework */, 139 | 6003F5AF195388D20070C39A /* XCTest.framework */, 140 | 7753A01D64AE98B24A42C917 /* Pods_DFContinuousForceTouchGestureRecognizer_Example.framework */, 141 | C542B0279A2F1E3E8AD635EE /* Pods_DFContinuousForceTouchGestureRecognizer_Tests.framework */, 142 | ); 143 | name = Frameworks; 144 | sourceTree = ""; 145 | }; 146 | 6003F593195388D20070C39A /* Example for DFContinuousForceTouchGestureRecognizer */ = { 147 | isa = PBXGroup; 148 | children = ( 149 | F88379761BCF36530059B6E6 /* AppDelegate.h */, 150 | F88379771BCF36530059B6E6 /* AppDelegate.m */, 151 | F88379781BCF36530059B6E6 /* Assets.xcassets */, 152 | F88379791BCF36530059B6E6 /* Base.lproj */, 153 | F88379801BCF36530059B6E6 /* ViewController.h */, 154 | F88379811BCF36530059B6E6 /* ViewController.m */, 155 | 6003F599195388D20070C39A /* main.m */, 156 | 6003F594195388D20070C39A /* Supporting Files */, 157 | ); 158 | name = "Example for DFContinuousForceTouchGestureRecognizer"; 159 | path = DFContinuousForceTouchGestureRecognizer; 160 | sourceTree = ""; 161 | }; 162 | 6003F594195388D20070C39A /* Supporting Files */ = { 163 | isa = PBXGroup; 164 | children = ( 165 | F883798A1BCF395F0059B6E6 /* DFContinuousForceTouchGestureRecognizer-Info.plist */, 166 | F88379891BCF36BA0059B6E6 /* DFContinuousForceTouchGestureRecognizer-Prefix.pch */, 167 | F883797E1BCF36530059B6E6 /* elephant.png */, 168 | F883797F1BCF36530059B6E6 /* Info.plist */, 169 | ); 170 | name = "Supporting Files"; 171 | sourceTree = ""; 172 | }; 173 | 6003F5B5195388D20070C39A /* Tests */ = { 174 | isa = PBXGroup; 175 | children = ( 176 | 6003F5BB195388D20070C39A /* Tests.m */, 177 | 6003F5B6195388D20070C39A /* Supporting Files */, 178 | ); 179 | path = Tests; 180 | sourceTree = ""; 181 | }; 182 | 6003F5B6195388D20070C39A /* Supporting Files */ = { 183 | isa = PBXGroup; 184 | children = ( 185 | 6003F5B7195388D20070C39A /* Tests-Info.plist */, 186 | 6003F5B8195388D20070C39A /* InfoPlist.strings */, 187 | 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */, 188 | ); 189 | name = "Supporting Files"; 190 | sourceTree = ""; 191 | }; 192 | 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */ = { 193 | isa = PBXGroup; 194 | children = ( 195 | 9D0F4FE9601985130B3DBC7E /* DFContinuousForceTouchGestureRecognizer.podspec */, 196 | 3D23007B5DF2E30CBB8D5B7E /* README.md */, 197 | 00C7874FD570249E32CB0FC3 /* LICENSE */, 198 | ); 199 | name = "Podspec Metadata"; 200 | sourceTree = ""; 201 | }; 202 | F88379791BCF36530059B6E6 /* Base.lproj */ = { 203 | isa = PBXGroup; 204 | children = ( 205 | F883797A1BCF36530059B6E6 /* LaunchScreen.storyboard */, 206 | F883797C1BCF36530059B6E6 /* Main.storyboard */, 207 | ); 208 | path = Base.lproj; 209 | sourceTree = ""; 210 | }; 211 | /* End PBXGroup section */ 212 | 213 | /* Begin PBXNativeTarget section */ 214 | 6003F589195388D20070C39A /* DFContinuousForceTouchGestureRecognizer_Example */ = { 215 | isa = PBXNativeTarget; 216 | buildConfigurationList = 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "DFContinuousForceTouchGestureRecognizer_Example" */; 217 | buildPhases = ( 218 | 0E5848A12466DBE07476493E /* Check Pods Manifest.lock */, 219 | 6003F586195388D20070C39A /* Sources */, 220 | 6003F587195388D20070C39A /* Frameworks */, 221 | 6003F588195388D20070C39A /* Resources */, 222 | 01DEA6D0405DE17F49403C72 /* Embed Pods Frameworks */, 223 | AF7CA4D2F29EA38E3FD0F265 /* Copy Pods Resources */, 224 | ); 225 | buildRules = ( 226 | ); 227 | dependencies = ( 228 | ); 229 | name = DFContinuousForceTouchGestureRecognizer_Example; 230 | productName = DFContinuousForceTouchGestureRecognizer; 231 | productReference = 6003F58A195388D20070C39A /* DFContinuousForceTouchGestureRecognizer_Example.app */; 232 | productType = "com.apple.product-type.application"; 233 | }; 234 | 6003F5AD195388D20070C39A /* DFContinuousForceTouchGestureRecognizer_Tests */ = { 235 | isa = PBXNativeTarget; 236 | buildConfigurationList = 6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "DFContinuousForceTouchGestureRecognizer_Tests" */; 237 | buildPhases = ( 238 | 0B9C57058E7BAC6A26443D71 /* Check Pods Manifest.lock */, 239 | 6003F5AA195388D20070C39A /* Sources */, 240 | 6003F5AB195388D20070C39A /* Frameworks */, 241 | 6003F5AC195388D20070C39A /* Resources */, 242 | C9C7230E06ADCA80D0772FAF /* Embed Pods Frameworks */, 243 | 90FD31F5B90E680BDF29C4BC /* Copy Pods Resources */, 244 | ); 245 | buildRules = ( 246 | ); 247 | dependencies = ( 248 | 6003F5B4195388D20070C39A /* PBXTargetDependency */, 249 | ); 250 | name = DFContinuousForceTouchGestureRecognizer_Tests; 251 | productName = DFContinuousForceTouchGestureRecognizerTests; 252 | productReference = 6003F5AE195388D20070C39A /* DFContinuousForceTouchGestureRecognizer_Tests.xctest */; 253 | productType = "com.apple.product-type.bundle.unit-test"; 254 | }; 255 | /* End PBXNativeTarget section */ 256 | 257 | /* Begin PBXProject section */ 258 | 6003F582195388D10070C39A /* Project object */ = { 259 | isa = PBXProject; 260 | attributes = { 261 | CLASSPREFIX = DF; 262 | LastUpgradeCheck = 0510; 263 | ORGANIZATIONNAME = "Daniel Fogg"; 264 | TargetAttributes = { 265 | 6003F5AD195388D20070C39A = { 266 | TestTargetID = 6003F589195388D20070C39A; 267 | }; 268 | }; 269 | }; 270 | buildConfigurationList = 6003F585195388D10070C39A /* Build configuration list for PBXProject "DFContinuousForceTouchGestureRecognizer" */; 271 | compatibilityVersion = "Xcode 3.2"; 272 | developmentRegion = English; 273 | hasScannedForEncodings = 0; 274 | knownRegions = ( 275 | en, 276 | Base, 277 | ); 278 | mainGroup = 6003F581195388D10070C39A; 279 | productRefGroup = 6003F58B195388D20070C39A /* Products */; 280 | projectDirPath = ""; 281 | projectRoot = ""; 282 | targets = ( 283 | 6003F589195388D20070C39A /* DFContinuousForceTouchGestureRecognizer_Example */, 284 | 6003F5AD195388D20070C39A /* DFContinuousForceTouchGestureRecognizer_Tests */, 285 | ); 286 | }; 287 | /* End PBXProject section */ 288 | 289 | /* Begin PBXResourcesBuildPhase section */ 290 | 6003F588195388D20070C39A /* Resources */ = { 291 | isa = PBXResourcesBuildPhase; 292 | buildActionMask = 2147483647; 293 | files = ( 294 | F88379841BCF36530059B6E6 /* LaunchScreen.storyboard in Resources */, 295 | F88379861BCF36530059B6E6 /* elephant.png in Resources */, 296 | F88379871BCF36530059B6E6 /* Info.plist in Resources */, 297 | F88379831BCF36530059B6E6 /* Assets.xcassets in Resources */, 298 | F88379851BCF36530059B6E6 /* Main.storyboard in Resources */, 299 | F883798B1BCF395F0059B6E6 /* DFContinuousForceTouchGestureRecognizer-Info.plist in Resources */, 300 | ); 301 | runOnlyForDeploymentPostprocessing = 0; 302 | }; 303 | 6003F5AC195388D20070C39A /* Resources */ = { 304 | isa = PBXResourcesBuildPhase; 305 | buildActionMask = 2147483647; 306 | files = ( 307 | 6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */, 308 | ); 309 | runOnlyForDeploymentPostprocessing = 0; 310 | }; 311 | /* End PBXResourcesBuildPhase section */ 312 | 313 | /* Begin PBXShellScriptBuildPhase section */ 314 | 01DEA6D0405DE17F49403C72 /* Embed Pods Frameworks */ = { 315 | isa = PBXShellScriptBuildPhase; 316 | buildActionMask = 2147483647; 317 | files = ( 318 | ); 319 | inputPaths = ( 320 | ); 321 | name = "Embed Pods Frameworks"; 322 | outputPaths = ( 323 | ); 324 | runOnlyForDeploymentPostprocessing = 0; 325 | shellPath = /bin/sh; 326 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Pods-DFContinuousForceTouchGestureRecognizer_Example-frameworks.sh\"\n"; 327 | showEnvVarsInLog = 0; 328 | }; 329 | 0B9C57058E7BAC6A26443D71 /* Check Pods Manifest.lock */ = { 330 | isa = PBXShellScriptBuildPhase; 331 | buildActionMask = 2147483647; 332 | files = ( 333 | ); 334 | inputPaths = ( 335 | ); 336 | name = "Check Pods Manifest.lock"; 337 | outputPaths = ( 338 | ); 339 | runOnlyForDeploymentPostprocessing = 0; 340 | shellPath = /bin/sh; 341 | shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; 342 | showEnvVarsInLog = 0; 343 | }; 344 | 0E5848A12466DBE07476493E /* Check Pods Manifest.lock */ = { 345 | isa = PBXShellScriptBuildPhase; 346 | buildActionMask = 2147483647; 347 | files = ( 348 | ); 349 | inputPaths = ( 350 | ); 351 | name = "Check Pods Manifest.lock"; 352 | outputPaths = ( 353 | ); 354 | runOnlyForDeploymentPostprocessing = 0; 355 | shellPath = /bin/sh; 356 | shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; 357 | showEnvVarsInLog = 0; 358 | }; 359 | 90FD31F5B90E680BDF29C4BC /* Copy Pods Resources */ = { 360 | isa = PBXShellScriptBuildPhase; 361 | buildActionMask = 2147483647; 362 | files = ( 363 | ); 364 | inputPaths = ( 365 | ); 366 | name = "Copy Pods Resources"; 367 | outputPaths = ( 368 | ); 369 | runOnlyForDeploymentPostprocessing = 0; 370 | shellPath = /bin/sh; 371 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Pods-DFContinuousForceTouchGestureRecognizer_Tests-resources.sh\"\n"; 372 | showEnvVarsInLog = 0; 373 | }; 374 | AF7CA4D2F29EA38E3FD0F265 /* Copy Pods Resources */ = { 375 | isa = PBXShellScriptBuildPhase; 376 | buildActionMask = 2147483647; 377 | files = ( 378 | ); 379 | inputPaths = ( 380 | ); 381 | name = "Copy Pods Resources"; 382 | outputPaths = ( 383 | ); 384 | runOnlyForDeploymentPostprocessing = 0; 385 | shellPath = /bin/sh; 386 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Pods-DFContinuousForceTouchGestureRecognizer_Example-resources.sh\"\n"; 387 | showEnvVarsInLog = 0; 388 | }; 389 | C9C7230E06ADCA80D0772FAF /* Embed Pods Frameworks */ = { 390 | isa = PBXShellScriptBuildPhase; 391 | buildActionMask = 2147483647; 392 | files = ( 393 | ); 394 | inputPaths = ( 395 | ); 396 | name = "Embed Pods Frameworks"; 397 | outputPaths = ( 398 | ); 399 | runOnlyForDeploymentPostprocessing = 0; 400 | shellPath = /bin/sh; 401 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Pods-DFContinuousForceTouchGestureRecognizer_Tests-frameworks.sh\"\n"; 402 | showEnvVarsInLog = 0; 403 | }; 404 | /* End PBXShellScriptBuildPhase section */ 405 | 406 | /* Begin PBXSourcesBuildPhase section */ 407 | 6003F586195388D20070C39A /* Sources */ = { 408 | isa = PBXSourcesBuildPhase; 409 | buildActionMask = 2147483647; 410 | files = ( 411 | F88379881BCF36530059B6E6 /* ViewController.m in Sources */, 412 | F88379821BCF36530059B6E6 /* AppDelegate.m in Sources */, 413 | 6003F59A195388D20070C39A /* main.m in Sources */, 414 | ); 415 | runOnlyForDeploymentPostprocessing = 0; 416 | }; 417 | 6003F5AA195388D20070C39A /* Sources */ = { 418 | isa = PBXSourcesBuildPhase; 419 | buildActionMask = 2147483647; 420 | files = ( 421 | 6003F5BC195388D20070C39A /* Tests.m in Sources */, 422 | ); 423 | runOnlyForDeploymentPostprocessing = 0; 424 | }; 425 | /* End PBXSourcesBuildPhase section */ 426 | 427 | /* Begin PBXTargetDependency section */ 428 | 6003F5B4195388D20070C39A /* PBXTargetDependency */ = { 429 | isa = PBXTargetDependency; 430 | target = 6003F589195388D20070C39A /* DFContinuousForceTouchGestureRecognizer_Example */; 431 | targetProxy = 6003F5B3195388D20070C39A /* PBXContainerItemProxy */; 432 | }; 433 | /* End PBXTargetDependency section */ 434 | 435 | /* Begin PBXVariantGroup section */ 436 | 6003F5B8195388D20070C39A /* InfoPlist.strings */ = { 437 | isa = PBXVariantGroup; 438 | children = ( 439 | 6003F5B9195388D20070C39A /* en */, 440 | ); 441 | name = InfoPlist.strings; 442 | sourceTree = ""; 443 | }; 444 | F883797A1BCF36530059B6E6 /* LaunchScreen.storyboard */ = { 445 | isa = PBXVariantGroup; 446 | children = ( 447 | F883797B1BCF36530059B6E6 /* Base */, 448 | ); 449 | name = LaunchScreen.storyboard; 450 | sourceTree = ""; 451 | }; 452 | F883797C1BCF36530059B6E6 /* Main.storyboard */ = { 453 | isa = PBXVariantGroup; 454 | children = ( 455 | F883797D1BCF36530059B6E6 /* Base */, 456 | ); 457 | name = Main.storyboard; 458 | sourceTree = ""; 459 | }; 460 | /* End PBXVariantGroup section */ 461 | 462 | /* Begin XCBuildConfiguration section */ 463 | 6003F5BD195388D20070C39A /* Debug */ = { 464 | isa = XCBuildConfiguration; 465 | buildSettings = { 466 | ALWAYS_SEARCH_USER_PATHS = NO; 467 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 468 | CLANG_CXX_LIBRARY = "libc++"; 469 | CLANG_ENABLE_MODULES = YES; 470 | CLANG_ENABLE_OBJC_ARC = YES; 471 | CLANG_WARN_BOOL_CONVERSION = YES; 472 | CLANG_WARN_CONSTANT_CONVERSION = YES; 473 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 474 | CLANG_WARN_EMPTY_BODY = YES; 475 | CLANG_WARN_ENUM_CONVERSION = YES; 476 | CLANG_WARN_INT_CONVERSION = YES; 477 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 478 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 479 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 480 | COPY_PHASE_STRIP = NO; 481 | GCC_C_LANGUAGE_STANDARD = gnu99; 482 | GCC_DYNAMIC_NO_PIC = NO; 483 | GCC_OPTIMIZATION_LEVEL = 0; 484 | GCC_PREPROCESSOR_DEFINITIONS = ( 485 | "DEBUG=1", 486 | "$(inherited)", 487 | ); 488 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 489 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 490 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 491 | GCC_WARN_UNDECLARED_SELECTOR = YES; 492 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 493 | GCC_WARN_UNUSED_FUNCTION = YES; 494 | GCC_WARN_UNUSED_VARIABLE = YES; 495 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; 496 | ONLY_ACTIVE_ARCH = YES; 497 | SDKROOT = iphoneos; 498 | TARGETED_DEVICE_FAMILY = "1,2"; 499 | }; 500 | name = Debug; 501 | }; 502 | 6003F5BE195388D20070C39A /* Release */ = { 503 | isa = XCBuildConfiguration; 504 | buildSettings = { 505 | ALWAYS_SEARCH_USER_PATHS = NO; 506 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 507 | CLANG_CXX_LIBRARY = "libc++"; 508 | CLANG_ENABLE_MODULES = YES; 509 | CLANG_ENABLE_OBJC_ARC = YES; 510 | CLANG_WARN_BOOL_CONVERSION = YES; 511 | CLANG_WARN_CONSTANT_CONVERSION = YES; 512 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 513 | CLANG_WARN_EMPTY_BODY = YES; 514 | CLANG_WARN_ENUM_CONVERSION = YES; 515 | CLANG_WARN_INT_CONVERSION = YES; 516 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 517 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 518 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 519 | COPY_PHASE_STRIP = YES; 520 | ENABLE_NS_ASSERTIONS = NO; 521 | GCC_C_LANGUAGE_STANDARD = gnu99; 522 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 523 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 524 | GCC_WARN_UNDECLARED_SELECTOR = YES; 525 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 526 | GCC_WARN_UNUSED_FUNCTION = YES; 527 | GCC_WARN_UNUSED_VARIABLE = YES; 528 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; 529 | SDKROOT = iphoneos; 530 | TARGETED_DEVICE_FAMILY = "1,2"; 531 | VALIDATE_PRODUCT = YES; 532 | }; 533 | name = Release; 534 | }; 535 | 6003F5C0195388D20070C39A /* Debug */ = { 536 | isa = XCBuildConfiguration; 537 | baseConfigurationReference = 981BA63AA3B05A012EA31C34 /* Pods-DFContinuousForceTouchGestureRecognizer_Example.debug.xcconfig */; 538 | buildSettings = { 539 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 540 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 541 | GCC_PREFIX_HEADER = "DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer-Prefix.pch"; 542 | INFOPLIST_FILE = "DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer-Info.plist"; 543 | MODULE_NAME = ExampleApp; 544 | PRODUCT_NAME = "$(TARGET_NAME)"; 545 | WRAPPER_EXTENSION = app; 546 | }; 547 | name = Debug; 548 | }; 549 | 6003F5C1195388D20070C39A /* Release */ = { 550 | isa = XCBuildConfiguration; 551 | baseConfigurationReference = 234BB9E0B970B43AE8446FB4 /* Pods-DFContinuousForceTouchGestureRecognizer_Example.release.xcconfig */; 552 | buildSettings = { 553 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 554 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 555 | GCC_PREFIX_HEADER = "DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer-Prefix.pch"; 556 | INFOPLIST_FILE = "DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer-Info.plist"; 557 | MODULE_NAME = ExampleApp; 558 | PRODUCT_NAME = "$(TARGET_NAME)"; 559 | WRAPPER_EXTENSION = app; 560 | }; 561 | name = Release; 562 | }; 563 | 6003F5C3195388D20070C39A /* Debug */ = { 564 | isa = XCBuildConfiguration; 565 | baseConfigurationReference = 639F86B08D7A4F69FEA30F2C /* Pods-DFContinuousForceTouchGestureRecognizer_Tests.debug.xcconfig */; 566 | buildSettings = { 567 | BUNDLE_LOADER = "$(TEST_HOST)"; 568 | FRAMEWORK_SEARCH_PATHS = ( 569 | "$(SDKROOT)/Developer/Library/Frameworks", 570 | "$(inherited)", 571 | "$(DEVELOPER_FRAMEWORKS_DIR)", 572 | ); 573 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 574 | GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch"; 575 | GCC_PREPROCESSOR_DEFINITIONS = ( 576 | "DEBUG=1", 577 | "$(inherited)", 578 | ); 579 | INFOPLIST_FILE = "Tests/Tests-Info.plist"; 580 | PRODUCT_NAME = "$(TARGET_NAME)"; 581 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/DFContinuousForceTouchGestureRecognizer_Example.app/DFContinuousForceTouchGestureRecognizer_Example"; 582 | WRAPPER_EXTENSION = xctest; 583 | }; 584 | name = Debug; 585 | }; 586 | 6003F5C4195388D20070C39A /* Release */ = { 587 | isa = XCBuildConfiguration; 588 | baseConfigurationReference = 4FA301A6FACDCFA225259BBC /* Pods-DFContinuousForceTouchGestureRecognizer_Tests.release.xcconfig */; 589 | buildSettings = { 590 | BUNDLE_LOADER = "$(TEST_HOST)"; 591 | FRAMEWORK_SEARCH_PATHS = ( 592 | "$(SDKROOT)/Developer/Library/Frameworks", 593 | "$(inherited)", 594 | "$(DEVELOPER_FRAMEWORKS_DIR)", 595 | ); 596 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 597 | GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch"; 598 | INFOPLIST_FILE = "Tests/Tests-Info.plist"; 599 | PRODUCT_NAME = "$(TARGET_NAME)"; 600 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/DFContinuousForceTouchGestureRecognizer_Example.app/DFContinuousForceTouchGestureRecognizer_Example"; 601 | WRAPPER_EXTENSION = xctest; 602 | }; 603 | name = Release; 604 | }; 605 | /* End XCBuildConfiguration section */ 606 | 607 | /* Begin XCConfigurationList section */ 608 | 6003F585195388D10070C39A /* Build configuration list for PBXProject "DFContinuousForceTouchGestureRecognizer" */ = { 609 | isa = XCConfigurationList; 610 | buildConfigurations = ( 611 | 6003F5BD195388D20070C39A /* Debug */, 612 | 6003F5BE195388D20070C39A /* Release */, 613 | ); 614 | defaultConfigurationIsVisible = 0; 615 | defaultConfigurationName = Release; 616 | }; 617 | 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "DFContinuousForceTouchGestureRecognizer_Example" */ = { 618 | isa = XCConfigurationList; 619 | buildConfigurations = ( 620 | 6003F5C0195388D20070C39A /* Debug */, 621 | 6003F5C1195388D20070C39A /* Release */, 622 | ); 623 | defaultConfigurationIsVisible = 0; 624 | defaultConfigurationName = Release; 625 | }; 626 | 6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "DFContinuousForceTouchGestureRecognizer_Tests" */ = { 627 | isa = XCConfigurationList; 628 | buildConfigurations = ( 629 | 6003F5C3195388D20070C39A /* Debug */, 630 | 6003F5C4195388D20070C39A /* Release */, 631 | ); 632 | defaultConfigurationIsVisible = 0; 633 | defaultConfigurationName = Release; 634 | }; 635 | /* End XCConfigurationList section */ 636 | }; 637 | rootObject = 6003F582195388D10070C39A /* Project object */; 638 | } 639 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 08825212B1DC6CE47EEF00AA1884FDCC /* DFContinuousForceTouchGestureRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = CDC5AE2D3C266CFEF4330340D0F4548C /* DFContinuousForceTouchGestureRecognizer.m */; }; 11 | 1109A94E33B53AF3040A57643AC9024D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E8461A2ECBDC8D9DCDC8D3520BE05ECD /* Foundation.framework */; }; 12 | 298B84B0530A603ABDDD909D78874E41 /* DFContinuousForceTouchGestureRecognizer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8988D4203F424A82512FFD9C64091E6D /* DFContinuousForceTouchGestureRecognizer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 13 | 55958E3D8976271E460B4A7F82D16C70 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 38DC4379574E26F09298C9425ECB75AE /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 14 | 63A016186AF47D7B33750465ACD86681 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E8461A2ECBDC8D9DCDC8D3520BE05ECD /* Foundation.framework */; }; 15 | 83330DE0ABDA7409E46E06215387C230 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AAD24B8CDEB7A5A3F288B11E1293F79 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-dummy.m */; }; 16 | 8B9DF9E1C8131B89B91FAA4AC58F3D94 /* Pods-DFContinuousForceTouchGestureRecognizer_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 100AD28E8E9F53D8739FC7AC30904499 /* Pods-DFContinuousForceTouchGestureRecognizer_Example-dummy.m */; }; 17 | 8DE42A884861D0AAFCF7D763E199CEDB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E8461A2ECBDC8D9DCDC8D3520BE05ECD /* Foundation.framework */; }; 18 | 9957B5FF38301011F24D7173738F3E61 /* DFContinuousForceTouchGestureRecognizer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 388B31D04C534186732C54A2CF745CED /* DFContinuousForceTouchGestureRecognizer-dummy.m */; }; 19 | BC09A0C86ECC5842260818C8FE950B47 /* DFContinuousForceTouchGestureRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = E3BD40B60FEB2CF01CB3A3867075BF92 /* DFContinuousForceTouchGestureRecognizer.h */; settings = {ATTRIBUTES = (Public, ); }; }; 20 | BF706AF8C3A90CDA60991DCF679E39B6 /* DFContinuousForceTouchGestureRecognizer.bundle in Resources */ = {isa = PBXBuildFile; fileRef = AFBBFAD35AEEC48A4CB0ACECC83D7160 /* DFContinuousForceTouchGestureRecognizer.bundle */; }; 21 | D2A182EC06822A754A66CBFA112E2287 /* Pods-DFContinuousForceTouchGestureRecognizer_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B2C3FCE56D465D834FADE4AD1E432E2 /* Pods-DFContinuousForceTouchGestureRecognizer_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 22 | /* End PBXBuildFile section */ 23 | 24 | /* Begin PBXContainerItemProxy section */ 25 | 072F7A8BD2177FB76254DED6F7F75E47 /* PBXContainerItemProxy */ = { 26 | isa = PBXContainerItemProxy; 27 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 28 | proxyType = 1; 29 | remoteGlobalIDString = A42FA7AE2B8AF53B5ABB8340A71F8010; 30 | remoteInfo = "DFContinuousForceTouchGestureRecognizer-DFContinuousForceTouchGestureRecognizer"; 31 | }; 32 | 70DD26B8BFB487C027F65DE20B211523 /* PBXContainerItemProxy */ = { 33 | isa = PBXContainerItemProxy; 34 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 35 | proxyType = 1; 36 | remoteGlobalIDString = 4502A5E2AF8AE29D0633003E8A59345B; 37 | remoteInfo = DFContinuousForceTouchGestureRecognizer; 38 | }; 39 | F4D3929B514D3A88DF926D6C2961BD7F /* PBXContainerItemProxy */ = { 40 | isa = PBXContainerItemProxy; 41 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 42 | proxyType = 1; 43 | remoteGlobalIDString = 4502A5E2AF8AE29D0633003E8A59345B; 44 | remoteInfo = DFContinuousForceTouchGestureRecognizer; 45 | }; 46 | /* End PBXContainerItemProxy section */ 47 | 48 | /* Begin PBXFileReference section */ 49 | 054A4DF2FDC480201927AE692C3FB538 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 50 | 0A0643964A004D855C8DB3F52271FCFF /* Pods-DFContinuousForceTouchGestureRecognizer_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DFContinuousForceTouchGestureRecognizer_Example.release.xcconfig"; sourceTree = ""; }; 51 | 0D8368AFE9DDCBCF02FA2162568FF977 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DFContinuousForceTouchGestureRecognizer_Tests.debug.xcconfig"; sourceTree = ""; }; 52 | 0FBC0AEEBA1C96042B4118A21D666A70 /* Pods-DFContinuousForceTouchGestureRecognizer_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DFContinuousForceTouchGestureRecognizer_Example-frameworks.sh"; sourceTree = ""; }; 53 | 100AD28E8E9F53D8739FC7AC30904499 /* Pods-DFContinuousForceTouchGestureRecognizer_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-DFContinuousForceTouchGestureRecognizer_Example-dummy.m"; sourceTree = ""; }; 54 | 1B2C3FCE56D465D834FADE4AD1E432E2 /* Pods-DFContinuousForceTouchGestureRecognizer_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-DFContinuousForceTouchGestureRecognizer_Example-umbrella.h"; sourceTree = ""; }; 55 | 23CD9D3B3D63288A4F08245D69802BA5 /* DFContinuousForceTouchGestureRecognizer.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DFContinuousForceTouchGestureRecognizer.xcconfig; sourceTree = ""; }; 56 | 2A21E5A7FF9F238CDECB12D2C3A55847 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-DFContinuousForceTouchGestureRecognizer_Tests-acknowledgements.markdown"; sourceTree = ""; }; 57 | 2BC9BFCA5D01365F97F7A5D2DB13EDD0 /* DFContinuousForceTouchGestureRecognizer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DFContinuousForceTouchGestureRecognizer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 58 | 388B31D04C534186732C54A2CF745CED /* DFContinuousForceTouchGestureRecognizer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DFContinuousForceTouchGestureRecognizer-dummy.m"; sourceTree = ""; }; 59 | 38DC4379574E26F09298C9425ECB75AE /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-DFContinuousForceTouchGestureRecognizer_Tests-umbrella.h"; sourceTree = ""; }; 60 | 3C18C8D98BFF1D6FCFBD3EF5943FF319 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DFContinuousForceTouchGestureRecognizer_Tests.release.xcconfig"; sourceTree = ""; }; 61 | 3DCDAC83014FC7E9E6E965D49F9EC4AC /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DFContinuousForceTouchGestureRecognizer_Tests-acknowledgements.plist"; sourceTree = ""; }; 62 | 41F1E3235B967DFB64EB336A12AA83CB /* DFContinuousForceTouchGestureRecognizer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DFContinuousForceTouchGestureRecognizer-prefix.pch"; sourceTree = ""; }; 63 | 44B6F3C442A37C87586EAA1D70280F70 /* Pods-DFContinuousForceTouchGestureRecognizer_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DFContinuousForceTouchGestureRecognizer_Example-resources.sh"; sourceTree = ""; }; 64 | 5AAD24B8CDEB7A5A3F288B11E1293F79 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-DFContinuousForceTouchGestureRecognizer_Tests-dummy.m"; sourceTree = ""; }; 65 | 6F1FD11F808FBED5BDE80E7666D40FD1 /* Pods-DFContinuousForceTouchGestureRecognizer_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-DFContinuousForceTouchGestureRecognizer_Example.modulemap"; sourceTree = ""; }; 66 | 81A0F8CE25480FA179EB06295EE8CAFB /* Pods_DFContinuousForceTouchGestureRecognizer_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DFContinuousForceTouchGestureRecognizer_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 67 | 85257B83FDCFCAC7ECD89F10A2EBFC29 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DFContinuousForceTouchGestureRecognizer_Tests-frameworks.sh"; sourceTree = ""; }; 68 | 8988D4203F424A82512FFD9C64091E6D /* DFContinuousForceTouchGestureRecognizer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DFContinuousForceTouchGestureRecognizer-umbrella.h"; sourceTree = ""; }; 69 | 932D6661E787BB3099DD44C2BED8BB98 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DFContinuousForceTouchGestureRecognizer_Tests-resources.sh"; sourceTree = ""; }; 70 | A1202C7DCF408970D129EE7DCE66BDA8 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 71 | A21C64F19E3FD152179A745265141EDC /* Pods-DFContinuousForceTouchGestureRecognizer_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-DFContinuousForceTouchGestureRecognizer_Tests.modulemap"; sourceTree = ""; }; 72 | AE7B478521E41DB5B67BBC77EB2FEA7F /* Pods-DFContinuousForceTouchGestureRecognizer_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DFContinuousForceTouchGestureRecognizer_Example-acknowledgements.plist"; sourceTree = ""; }; 73 | AFBBFAD35AEEC48A4CB0ACECC83D7160 /* DFContinuousForceTouchGestureRecognizer.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DFContinuousForceTouchGestureRecognizer.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 74 | BA0EB81AA592142A4A196AE28A576B03 /* Pods_DFContinuousForceTouchGestureRecognizer_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DFContinuousForceTouchGestureRecognizer_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 75 | BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 76 | CDC5AE2D3C266CFEF4330340D0F4548C /* DFContinuousForceTouchGestureRecognizer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = DFContinuousForceTouchGestureRecognizer.m; sourceTree = ""; }; 77 | DBE95B600119BF9EEFC34EB2ED79DC72 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 78 | E3BD40B60FEB2CF01CB3A3867075BF92 /* DFContinuousForceTouchGestureRecognizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DFContinuousForceTouchGestureRecognizer.h; sourceTree = ""; }; 79 | E48F8C1F7FED68D15396BCB93A561D99 /* DFContinuousForceTouchGestureRecognizer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = DFContinuousForceTouchGestureRecognizer.modulemap; sourceTree = ""; }; 80 | E8461A2ECBDC8D9DCDC8D3520BE05ECD /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 81 | F678469E25886506252CAA346A3CD13F /* Pods-DFContinuousForceTouchGestureRecognizer_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-DFContinuousForceTouchGestureRecognizer_Example-acknowledgements.markdown"; sourceTree = ""; }; 82 | F6F432D34BB6D3BCE560B2516D18B0CE /* Pods-DFContinuousForceTouchGestureRecognizer_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DFContinuousForceTouchGestureRecognizer_Example.debug.xcconfig"; sourceTree = ""; }; 83 | FAFE5094B56415758FD7ED560E5F6348 /* DFContinuousForceTouchGestureRecognizer-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "DFContinuousForceTouchGestureRecognizer-Private.xcconfig"; sourceTree = ""; }; 84 | /* End PBXFileReference section */ 85 | 86 | /* Begin PBXFrameworksBuildPhase section */ 87 | 4F8ACE67F9352577CFEB10AB65592B76 /* Frameworks */ = { 88 | isa = PBXFrameworksBuildPhase; 89 | buildActionMask = 2147483647; 90 | files = ( 91 | 1109A94E33B53AF3040A57643AC9024D /* Foundation.framework in Frameworks */, 92 | ); 93 | runOnlyForDeploymentPostprocessing = 0; 94 | }; 95 | 563DBDA9F059223AE466E2897098801F /* Frameworks */ = { 96 | isa = PBXFrameworksBuildPhase; 97 | buildActionMask = 2147483647; 98 | files = ( 99 | 63A016186AF47D7B33750465ACD86681 /* Foundation.framework in Frameworks */, 100 | ); 101 | runOnlyForDeploymentPostprocessing = 0; 102 | }; 103 | B2884370BBB0F771CEF2C314E72C8409 /* Frameworks */ = { 104 | isa = PBXFrameworksBuildPhase; 105 | buildActionMask = 2147483647; 106 | files = ( 107 | ); 108 | runOnlyForDeploymentPostprocessing = 0; 109 | }; 110 | B98A447868302D1B4333FA0DD6D78A8B /* Frameworks */ = { 111 | isa = PBXFrameworksBuildPhase; 112 | buildActionMask = 2147483647; 113 | files = ( 114 | 8DE42A884861D0AAFCF7D763E199CEDB /* Foundation.framework in Frameworks */, 115 | ); 116 | runOnlyForDeploymentPostprocessing = 0; 117 | }; 118 | /* End PBXFrameworksBuildPhase section */ 119 | 120 | /* Begin PBXGroup section */ 121 | 02378318AE4209D45C3DB9D9734E0543 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests */ = { 122 | isa = PBXGroup; 123 | children = ( 124 | A1202C7DCF408970D129EE7DCE66BDA8 /* Info.plist */, 125 | A21C64F19E3FD152179A745265141EDC /* Pods-DFContinuousForceTouchGestureRecognizer_Tests.modulemap */, 126 | 2A21E5A7FF9F238CDECB12D2C3A55847 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-acknowledgements.markdown */, 127 | 3DCDAC83014FC7E9E6E965D49F9EC4AC /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-acknowledgements.plist */, 128 | 5AAD24B8CDEB7A5A3F288B11E1293F79 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-dummy.m */, 129 | 85257B83FDCFCAC7ECD89F10A2EBFC29 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-frameworks.sh */, 130 | 932D6661E787BB3099DD44C2BED8BB98 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-resources.sh */, 131 | 38DC4379574E26F09298C9425ECB75AE /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-umbrella.h */, 132 | 0D8368AFE9DDCBCF02FA2162568FF977 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests.debug.xcconfig */, 133 | 3C18C8D98BFF1D6FCFBD3EF5943FF319 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests.release.xcconfig */, 134 | ); 135 | name = "Pods-DFContinuousForceTouchGestureRecognizer_Tests"; 136 | path = "Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests"; 137 | sourceTree = ""; 138 | }; 139 | 299EA34CC741B08677F2218D6F9780AE /* Pod */ = { 140 | isa = PBXGroup; 141 | children = ( 142 | 80144BFBF08E6EF646F3A765AC9B0980 /* Classes */, 143 | ); 144 | path = Pod; 145 | sourceTree = ""; 146 | }; 147 | 3CCA076DFB1BE01F61F3032CAA26D373 /* DFContinuousForceTouchGestureRecognizer */ = { 148 | isa = PBXGroup; 149 | children = ( 150 | 299EA34CC741B08677F2218D6F9780AE /* Pod */, 151 | CF5AE09F3457D0479A2C198113A9797C /* Support Files */, 152 | ); 153 | name = DFContinuousForceTouchGestureRecognizer; 154 | path = ../..; 155 | sourceTree = ""; 156 | }; 157 | 53D8C061D754213A4A554B96CC2D15E7 /* Development Pods */ = { 158 | isa = PBXGroup; 159 | children = ( 160 | 3CCA076DFB1BE01F61F3032CAA26D373 /* DFContinuousForceTouchGestureRecognizer */, 161 | ); 162 | name = "Development Pods"; 163 | sourceTree = ""; 164 | }; 165 | 53F661C0CA7190D2CF05023FB33D61E4 /* iOS */ = { 166 | isa = PBXGroup; 167 | children = ( 168 | E8461A2ECBDC8D9DCDC8D3520BE05ECD /* Foundation.framework */, 169 | ); 170 | name = iOS; 171 | sourceTree = ""; 172 | }; 173 | 6BF79AD1815121F23ADCB5138053DDC8 /* Pods-DFContinuousForceTouchGestureRecognizer_Example */ = { 174 | isa = PBXGroup; 175 | children = ( 176 | DBE95B600119BF9EEFC34EB2ED79DC72 /* Info.plist */, 177 | 6F1FD11F808FBED5BDE80E7666D40FD1 /* Pods-DFContinuousForceTouchGestureRecognizer_Example.modulemap */, 178 | F678469E25886506252CAA346A3CD13F /* Pods-DFContinuousForceTouchGestureRecognizer_Example-acknowledgements.markdown */, 179 | AE7B478521E41DB5B67BBC77EB2FEA7F /* Pods-DFContinuousForceTouchGestureRecognizer_Example-acknowledgements.plist */, 180 | 100AD28E8E9F53D8739FC7AC30904499 /* Pods-DFContinuousForceTouchGestureRecognizer_Example-dummy.m */, 181 | 0FBC0AEEBA1C96042B4118A21D666A70 /* Pods-DFContinuousForceTouchGestureRecognizer_Example-frameworks.sh */, 182 | 44B6F3C442A37C87586EAA1D70280F70 /* Pods-DFContinuousForceTouchGestureRecognizer_Example-resources.sh */, 183 | 1B2C3FCE56D465D834FADE4AD1E432E2 /* Pods-DFContinuousForceTouchGestureRecognizer_Example-umbrella.h */, 184 | F6F432D34BB6D3BCE560B2516D18B0CE /* Pods-DFContinuousForceTouchGestureRecognizer_Example.debug.xcconfig */, 185 | 0A0643964A004D855C8DB3F52271FCFF /* Pods-DFContinuousForceTouchGestureRecognizer_Example.release.xcconfig */, 186 | ); 187 | name = "Pods-DFContinuousForceTouchGestureRecognizer_Example"; 188 | path = "Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example"; 189 | sourceTree = ""; 190 | }; 191 | 7DB346D0F39D3F0E887471402A8071AB = { 192 | isa = PBXGroup; 193 | children = ( 194 | BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, 195 | 53D8C061D754213A4A554B96CC2D15E7 /* Development Pods */, 196 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, 197 | CCA510CFBEA2D207524CDA0D73C3B561 /* Products */, 198 | F73D277F6FFE9C5E722CD0A6C358CAE9 /* Targets Support Files */, 199 | ); 200 | sourceTree = ""; 201 | }; 202 | 80144BFBF08E6EF646F3A765AC9B0980 /* Classes */ = { 203 | isa = PBXGroup; 204 | children = ( 205 | E3BD40B60FEB2CF01CB3A3867075BF92 /* DFContinuousForceTouchGestureRecognizer.h */, 206 | CDC5AE2D3C266CFEF4330340D0F4548C /* DFContinuousForceTouchGestureRecognizer.m */, 207 | ); 208 | path = Classes; 209 | sourceTree = ""; 210 | }; 211 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { 212 | isa = PBXGroup; 213 | children = ( 214 | 53F661C0CA7190D2CF05023FB33D61E4 /* iOS */, 215 | ); 216 | name = Frameworks; 217 | sourceTree = ""; 218 | }; 219 | CCA510CFBEA2D207524CDA0D73C3B561 /* Products */ = { 220 | isa = PBXGroup; 221 | children = ( 222 | AFBBFAD35AEEC48A4CB0ACECC83D7160 /* DFContinuousForceTouchGestureRecognizer.bundle */, 223 | 2BC9BFCA5D01365F97F7A5D2DB13EDD0 /* DFContinuousForceTouchGestureRecognizer.framework */, 224 | 81A0F8CE25480FA179EB06295EE8CAFB /* Pods_DFContinuousForceTouchGestureRecognizer_Example.framework */, 225 | BA0EB81AA592142A4A196AE28A576B03 /* Pods_DFContinuousForceTouchGestureRecognizer_Tests.framework */, 226 | ); 227 | name = Products; 228 | sourceTree = ""; 229 | }; 230 | CF5AE09F3457D0479A2C198113A9797C /* Support Files */ = { 231 | isa = PBXGroup; 232 | children = ( 233 | E48F8C1F7FED68D15396BCB93A561D99 /* DFContinuousForceTouchGestureRecognizer.modulemap */, 234 | 23CD9D3B3D63288A4F08245D69802BA5 /* DFContinuousForceTouchGestureRecognizer.xcconfig */, 235 | FAFE5094B56415758FD7ED560E5F6348 /* DFContinuousForceTouchGestureRecognizer-Private.xcconfig */, 236 | 388B31D04C534186732C54A2CF745CED /* DFContinuousForceTouchGestureRecognizer-dummy.m */, 237 | 41F1E3235B967DFB64EB336A12AA83CB /* DFContinuousForceTouchGestureRecognizer-prefix.pch */, 238 | 8988D4203F424A82512FFD9C64091E6D /* DFContinuousForceTouchGestureRecognizer-umbrella.h */, 239 | 054A4DF2FDC480201927AE692C3FB538 /* Info.plist */, 240 | ); 241 | name = "Support Files"; 242 | path = "Example/Pods/Target Support Files/DFContinuousForceTouchGestureRecognizer"; 243 | sourceTree = ""; 244 | }; 245 | F73D277F6FFE9C5E722CD0A6C358CAE9 /* Targets Support Files */ = { 246 | isa = PBXGroup; 247 | children = ( 248 | 6BF79AD1815121F23ADCB5138053DDC8 /* Pods-DFContinuousForceTouchGestureRecognizer_Example */, 249 | 02378318AE4209D45C3DB9D9734E0543 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests */, 250 | ); 251 | name = "Targets Support Files"; 252 | sourceTree = ""; 253 | }; 254 | /* End PBXGroup section */ 255 | 256 | /* Begin PBXHeadersBuildPhase section */ 257 | 80A84AAEC4D40EF63B47A93099928542 /* Headers */ = { 258 | isa = PBXHeadersBuildPhase; 259 | buildActionMask = 2147483647; 260 | files = ( 261 | D2A182EC06822A754A66CBFA112E2287 /* Pods-DFContinuousForceTouchGestureRecognizer_Example-umbrella.h in Headers */, 262 | ); 263 | runOnlyForDeploymentPostprocessing = 0; 264 | }; 265 | A10BF5DD87C7A33393FF25E86B2949DC /* Headers */ = { 266 | isa = PBXHeadersBuildPhase; 267 | buildActionMask = 2147483647; 268 | files = ( 269 | 298B84B0530A603ABDDD909D78874E41 /* DFContinuousForceTouchGestureRecognizer-umbrella.h in Headers */, 270 | BC09A0C86ECC5842260818C8FE950B47 /* DFContinuousForceTouchGestureRecognizer.h in Headers */, 271 | ); 272 | runOnlyForDeploymentPostprocessing = 0; 273 | }; 274 | AD939CD6AFA5821E8DD77C04AA220724 /* Headers */ = { 275 | isa = PBXHeadersBuildPhase; 276 | buildActionMask = 2147483647; 277 | files = ( 278 | 55958E3D8976271E460B4A7F82D16C70 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-umbrella.h in Headers */, 279 | ); 280 | runOnlyForDeploymentPostprocessing = 0; 281 | }; 282 | /* End PBXHeadersBuildPhase section */ 283 | 284 | /* Begin PBXNativeTarget section */ 285 | 4502A5E2AF8AE29D0633003E8A59345B /* DFContinuousForceTouchGestureRecognizer */ = { 286 | isa = PBXNativeTarget; 287 | buildConfigurationList = 1A5633F9262F6B89CEF121D2057BED5A /* Build configuration list for PBXNativeTarget "DFContinuousForceTouchGestureRecognizer" */; 288 | buildPhases = ( 289 | 97534FD159A20638648C3FE91E1A4A5A /* Sources */, 290 | 563DBDA9F059223AE466E2897098801F /* Frameworks */, 291 | 4D398BEC00AB29E2AE29B535C31B8590 /* Resources */, 292 | A10BF5DD87C7A33393FF25E86B2949DC /* Headers */, 293 | ); 294 | buildRules = ( 295 | ); 296 | dependencies = ( 297 | CC1716DBFDE80133FB51810E6AC148E0 /* PBXTargetDependency */, 298 | ); 299 | name = DFContinuousForceTouchGestureRecognizer; 300 | productName = DFContinuousForceTouchGestureRecognizer; 301 | productReference = 2BC9BFCA5D01365F97F7A5D2DB13EDD0 /* DFContinuousForceTouchGestureRecognizer.framework */; 302 | productType = "com.apple.product-type.framework"; 303 | }; 304 | 57F63C0ED28C12E1AB8EC9420FB0681C /* Pods-DFContinuousForceTouchGestureRecognizer_Tests */ = { 305 | isa = PBXNativeTarget; 306 | buildConfigurationList = 836C28802E96639DA9F1B1AB1B7743E6 /* Build configuration list for PBXNativeTarget "Pods-DFContinuousForceTouchGestureRecognizer_Tests" */; 307 | buildPhases = ( 308 | 3474752D86B4C1339210E7D6FE95068F /* Sources */, 309 | 4F8ACE67F9352577CFEB10AB65592B76 /* Frameworks */, 310 | AD939CD6AFA5821E8DD77C04AA220724 /* Headers */, 311 | ); 312 | buildRules = ( 313 | ); 314 | dependencies = ( 315 | F094D88D6A963DB78A32A44087264CE8 /* PBXTargetDependency */, 316 | ); 317 | name = "Pods-DFContinuousForceTouchGestureRecognizer_Tests"; 318 | productName = "Pods-DFContinuousForceTouchGestureRecognizer_Tests"; 319 | productReference = BA0EB81AA592142A4A196AE28A576B03 /* Pods_DFContinuousForceTouchGestureRecognizer_Tests.framework */; 320 | productType = "com.apple.product-type.framework"; 321 | }; 322 | A42FA7AE2B8AF53B5ABB8340A71F8010 /* DFContinuousForceTouchGestureRecognizer-DFContinuousForceTouchGestureRecognizer */ = { 323 | isa = PBXNativeTarget; 324 | buildConfigurationList = A3A278BB709D885E02AC41A05E8127CC /* Build configuration list for PBXNativeTarget "DFContinuousForceTouchGestureRecognizer-DFContinuousForceTouchGestureRecognizer" */; 325 | buildPhases = ( 326 | 6FAA2EB3E59FE573692127EDEB1726F2 /* Sources */, 327 | B2884370BBB0F771CEF2C314E72C8409 /* Frameworks */, 328 | 0C4B576E59CB5EEC2875C9E3AE970456 /* Resources */, 329 | ); 330 | buildRules = ( 331 | ); 332 | dependencies = ( 333 | ); 334 | name = "DFContinuousForceTouchGestureRecognizer-DFContinuousForceTouchGestureRecognizer"; 335 | productName = "DFContinuousForceTouchGestureRecognizer-DFContinuousForceTouchGestureRecognizer"; 336 | productReference = AFBBFAD35AEEC48A4CB0ACECC83D7160 /* DFContinuousForceTouchGestureRecognizer.bundle */; 337 | productType = "com.apple.product-type.bundle"; 338 | }; 339 | C4F033C17E6354314C6F993707B0F02D /* Pods-DFContinuousForceTouchGestureRecognizer_Example */ = { 340 | isa = PBXNativeTarget; 341 | buildConfigurationList = FAC6C8AE90FB69B8CF6C9DE686EADFA6 /* Build configuration list for PBXNativeTarget "Pods-DFContinuousForceTouchGestureRecognizer_Example" */; 342 | buildPhases = ( 343 | 882249880D8AAB81276BCA3426F0BEBC /* Sources */, 344 | B98A447868302D1B4333FA0DD6D78A8B /* Frameworks */, 345 | 80A84AAEC4D40EF63B47A93099928542 /* Headers */, 346 | ); 347 | buildRules = ( 348 | ); 349 | dependencies = ( 350 | 110EC6CFA450016038E153A134333A6E /* PBXTargetDependency */, 351 | ); 352 | name = "Pods-DFContinuousForceTouchGestureRecognizer_Example"; 353 | productName = "Pods-DFContinuousForceTouchGestureRecognizer_Example"; 354 | productReference = 81A0F8CE25480FA179EB06295EE8CAFB /* Pods_DFContinuousForceTouchGestureRecognizer_Example.framework */; 355 | productType = "com.apple.product-type.framework"; 356 | }; 357 | /* End PBXNativeTarget section */ 358 | 359 | /* Begin PBXProject section */ 360 | D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { 361 | isa = PBXProject; 362 | attributes = { 363 | LastSwiftUpdateCheck = 0700; 364 | LastUpgradeCheck = 0700; 365 | }; 366 | buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; 367 | compatibilityVersion = "Xcode 3.2"; 368 | developmentRegion = English; 369 | hasScannedForEncodings = 0; 370 | knownRegions = ( 371 | en, 372 | ); 373 | mainGroup = 7DB346D0F39D3F0E887471402A8071AB; 374 | productRefGroup = CCA510CFBEA2D207524CDA0D73C3B561 /* Products */; 375 | projectDirPath = ""; 376 | projectRoot = ""; 377 | targets = ( 378 | 4502A5E2AF8AE29D0633003E8A59345B /* DFContinuousForceTouchGestureRecognizer */, 379 | A42FA7AE2B8AF53B5ABB8340A71F8010 /* DFContinuousForceTouchGestureRecognizer-DFContinuousForceTouchGestureRecognizer */, 380 | C4F033C17E6354314C6F993707B0F02D /* Pods-DFContinuousForceTouchGestureRecognizer_Example */, 381 | 57F63C0ED28C12E1AB8EC9420FB0681C /* Pods-DFContinuousForceTouchGestureRecognizer_Tests */, 382 | ); 383 | }; 384 | /* End PBXProject section */ 385 | 386 | /* Begin PBXResourcesBuildPhase section */ 387 | 0C4B576E59CB5EEC2875C9E3AE970456 /* Resources */ = { 388 | isa = PBXResourcesBuildPhase; 389 | buildActionMask = 2147483647; 390 | files = ( 391 | ); 392 | runOnlyForDeploymentPostprocessing = 0; 393 | }; 394 | 4D398BEC00AB29E2AE29B535C31B8590 /* Resources */ = { 395 | isa = PBXResourcesBuildPhase; 396 | buildActionMask = 2147483647; 397 | files = ( 398 | BF706AF8C3A90CDA60991DCF679E39B6 /* DFContinuousForceTouchGestureRecognizer.bundle in Resources */, 399 | ); 400 | runOnlyForDeploymentPostprocessing = 0; 401 | }; 402 | /* End PBXResourcesBuildPhase section */ 403 | 404 | /* Begin PBXSourcesBuildPhase section */ 405 | 3474752D86B4C1339210E7D6FE95068F /* Sources */ = { 406 | isa = PBXSourcesBuildPhase; 407 | buildActionMask = 2147483647; 408 | files = ( 409 | 83330DE0ABDA7409E46E06215387C230 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests-dummy.m in Sources */, 410 | ); 411 | runOnlyForDeploymentPostprocessing = 0; 412 | }; 413 | 6FAA2EB3E59FE573692127EDEB1726F2 /* Sources */ = { 414 | isa = PBXSourcesBuildPhase; 415 | buildActionMask = 2147483647; 416 | files = ( 417 | ); 418 | runOnlyForDeploymentPostprocessing = 0; 419 | }; 420 | 882249880D8AAB81276BCA3426F0BEBC /* Sources */ = { 421 | isa = PBXSourcesBuildPhase; 422 | buildActionMask = 2147483647; 423 | files = ( 424 | 8B9DF9E1C8131B89B91FAA4AC58F3D94 /* Pods-DFContinuousForceTouchGestureRecognizer_Example-dummy.m in Sources */, 425 | ); 426 | runOnlyForDeploymentPostprocessing = 0; 427 | }; 428 | 97534FD159A20638648C3FE91E1A4A5A /* Sources */ = { 429 | isa = PBXSourcesBuildPhase; 430 | buildActionMask = 2147483647; 431 | files = ( 432 | 9957B5FF38301011F24D7173738F3E61 /* DFContinuousForceTouchGestureRecognizer-dummy.m in Sources */, 433 | 08825212B1DC6CE47EEF00AA1884FDCC /* DFContinuousForceTouchGestureRecognizer.m in Sources */, 434 | ); 435 | runOnlyForDeploymentPostprocessing = 0; 436 | }; 437 | /* End PBXSourcesBuildPhase section */ 438 | 439 | /* Begin PBXTargetDependency section */ 440 | 110EC6CFA450016038E153A134333A6E /* PBXTargetDependency */ = { 441 | isa = PBXTargetDependency; 442 | name = DFContinuousForceTouchGestureRecognizer; 443 | target = 4502A5E2AF8AE29D0633003E8A59345B /* DFContinuousForceTouchGestureRecognizer */; 444 | targetProxy = F4D3929B514D3A88DF926D6C2961BD7F /* PBXContainerItemProxy */; 445 | }; 446 | CC1716DBFDE80133FB51810E6AC148E0 /* PBXTargetDependency */ = { 447 | isa = PBXTargetDependency; 448 | name = "DFContinuousForceTouchGestureRecognizer-DFContinuousForceTouchGestureRecognizer"; 449 | target = A42FA7AE2B8AF53B5ABB8340A71F8010 /* DFContinuousForceTouchGestureRecognizer-DFContinuousForceTouchGestureRecognizer */; 450 | targetProxy = 072F7A8BD2177FB76254DED6F7F75E47 /* PBXContainerItemProxy */; 451 | }; 452 | F094D88D6A963DB78A32A44087264CE8 /* PBXTargetDependency */ = { 453 | isa = PBXTargetDependency; 454 | name = DFContinuousForceTouchGestureRecognizer; 455 | target = 4502A5E2AF8AE29D0633003E8A59345B /* DFContinuousForceTouchGestureRecognizer */; 456 | targetProxy = 70DD26B8BFB487C027F65DE20B211523 /* PBXContainerItemProxy */; 457 | }; 458 | /* End PBXTargetDependency section */ 459 | 460 | /* Begin XCBuildConfiguration section */ 461 | 03CA91998D6773EC5D02B3DB87B8353E /* Release */ = { 462 | isa = XCBuildConfiguration; 463 | buildSettings = { 464 | ALWAYS_SEARCH_USER_PATHS = NO; 465 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 466 | CLANG_CXX_LIBRARY = "libc++"; 467 | CLANG_ENABLE_MODULES = YES; 468 | CLANG_ENABLE_OBJC_ARC = YES; 469 | CLANG_WARN_BOOL_CONVERSION = YES; 470 | CLANG_WARN_CONSTANT_CONVERSION = YES; 471 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 472 | CLANG_WARN_EMPTY_BODY = YES; 473 | CLANG_WARN_ENUM_CONVERSION = YES; 474 | CLANG_WARN_INT_CONVERSION = YES; 475 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 476 | CLANG_WARN_UNREACHABLE_CODE = YES; 477 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 478 | COPY_PHASE_STRIP = YES; 479 | ENABLE_NS_ASSERTIONS = NO; 480 | GCC_C_LANGUAGE_STANDARD = gnu99; 481 | GCC_PREPROCESSOR_DEFINITIONS = "RELEASE=1"; 482 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 483 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 484 | GCC_WARN_UNDECLARED_SELECTOR = YES; 485 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 486 | GCC_WARN_UNUSED_FUNCTION = YES; 487 | GCC_WARN_UNUSED_VARIABLE = YES; 488 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; 489 | STRIP_INSTALLED_PRODUCT = NO; 490 | SYMROOT = "${SRCROOT}/../build"; 491 | VALIDATE_PRODUCT = YES; 492 | }; 493 | name = Release; 494 | }; 495 | 09EBE6083A7AABA2A361A4EA038AB3C9 /* Release */ = { 496 | isa = XCBuildConfiguration; 497 | baseConfigurationReference = 3C18C8D98BFF1D6FCFBD3EF5943FF319 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests.release.xcconfig */; 498 | buildSettings = { 499 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 500 | CURRENT_PROJECT_VERSION = 1; 501 | DEFINES_MODULE = YES; 502 | DYLIB_COMPATIBILITY_VERSION = 1; 503 | DYLIB_CURRENT_VERSION = 1; 504 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 505 | ENABLE_STRICT_OBJC_MSGSEND = YES; 506 | INFOPLIST_FILE = "Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Info.plist"; 507 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 508 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; 509 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 510 | MODULEMAP_FILE = "Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Pods-DFContinuousForceTouchGestureRecognizer_Tests.modulemap"; 511 | MTL_ENABLE_DEBUG_INFO = NO; 512 | OTHER_LDFLAGS = ""; 513 | OTHER_LIBTOOLFLAGS = ""; 514 | PODS_ROOT = "$(SRCROOT)"; 515 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 516 | PRODUCT_NAME = Pods_DFContinuousForceTouchGestureRecognizer_Tests; 517 | SDKROOT = iphoneos; 518 | SKIP_INSTALL = YES; 519 | TARGETED_DEVICE_FAMILY = "1,2"; 520 | VERSIONING_SYSTEM = "apple-generic"; 521 | VERSION_INFO_PREFIX = ""; 522 | }; 523 | name = Release; 524 | }; 525 | 0B57334D6C23DADAA4F7D802A5760EB2 /* Debug */ = { 526 | isa = XCBuildConfiguration; 527 | buildSettings = { 528 | ALWAYS_SEARCH_USER_PATHS = NO; 529 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 530 | CLANG_CXX_LIBRARY = "libc++"; 531 | CLANG_ENABLE_MODULES = YES; 532 | CLANG_ENABLE_OBJC_ARC = YES; 533 | CLANG_WARN_BOOL_CONVERSION = YES; 534 | CLANG_WARN_CONSTANT_CONVERSION = YES; 535 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 536 | CLANG_WARN_EMPTY_BODY = YES; 537 | CLANG_WARN_ENUM_CONVERSION = YES; 538 | CLANG_WARN_INT_CONVERSION = YES; 539 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 540 | CLANG_WARN_UNREACHABLE_CODE = YES; 541 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 542 | COPY_PHASE_STRIP = NO; 543 | ENABLE_TESTABILITY = YES; 544 | GCC_C_LANGUAGE_STANDARD = gnu99; 545 | GCC_DYNAMIC_NO_PIC = NO; 546 | GCC_OPTIMIZATION_LEVEL = 0; 547 | GCC_PREPROCESSOR_DEFINITIONS = ( 548 | "DEBUG=1", 549 | "$(inherited)", 550 | ); 551 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 552 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 553 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 554 | GCC_WARN_UNDECLARED_SELECTOR = YES; 555 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 556 | GCC_WARN_UNUSED_FUNCTION = YES; 557 | GCC_WARN_UNUSED_VARIABLE = YES; 558 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; 559 | ONLY_ACTIVE_ARCH = YES; 560 | STRIP_INSTALLED_PRODUCT = NO; 561 | SYMROOT = "${SRCROOT}/../build"; 562 | }; 563 | name = Debug; 564 | }; 565 | 2BB52BC7208C2FC5084343B0E8DC5CCC /* Debug */ = { 566 | isa = XCBuildConfiguration; 567 | baseConfigurationReference = 0D8368AFE9DDCBCF02FA2162568FF977 /* Pods-DFContinuousForceTouchGestureRecognizer_Tests.debug.xcconfig */; 568 | buildSettings = { 569 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 570 | CURRENT_PROJECT_VERSION = 1; 571 | DEFINES_MODULE = YES; 572 | DYLIB_COMPATIBILITY_VERSION = 1; 573 | DYLIB_CURRENT_VERSION = 1; 574 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 575 | ENABLE_STRICT_OBJC_MSGSEND = YES; 576 | INFOPLIST_FILE = "Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Info.plist"; 577 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 578 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; 579 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 580 | MODULEMAP_FILE = "Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Tests/Pods-DFContinuousForceTouchGestureRecognizer_Tests.modulemap"; 581 | MTL_ENABLE_DEBUG_INFO = YES; 582 | OTHER_LDFLAGS = ""; 583 | OTHER_LIBTOOLFLAGS = ""; 584 | PODS_ROOT = "$(SRCROOT)"; 585 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 586 | PRODUCT_NAME = Pods_DFContinuousForceTouchGestureRecognizer_Tests; 587 | SDKROOT = iphoneos; 588 | SKIP_INSTALL = YES; 589 | TARGETED_DEVICE_FAMILY = "1,2"; 590 | VERSIONING_SYSTEM = "apple-generic"; 591 | VERSION_INFO_PREFIX = ""; 592 | }; 593 | name = Debug; 594 | }; 595 | 2F28A30C6C1B7867CE4B65D2FE099E41 /* Release */ = { 596 | isa = XCBuildConfiguration; 597 | baseConfigurationReference = FAFE5094B56415758FD7ED560E5F6348 /* DFContinuousForceTouchGestureRecognizer-Private.xcconfig */; 598 | buildSettings = { 599 | ENABLE_STRICT_OBJC_MSGSEND = YES; 600 | PRODUCT_NAME = DFContinuousForceTouchGestureRecognizer; 601 | SDKROOT = iphoneos; 602 | SKIP_INSTALL = YES; 603 | WRAPPER_EXTENSION = bundle; 604 | }; 605 | name = Release; 606 | }; 607 | 470A3B62E3977C35F09445FB5A86304D /* Release */ = { 608 | isa = XCBuildConfiguration; 609 | baseConfigurationReference = 0A0643964A004D855C8DB3F52271FCFF /* Pods-DFContinuousForceTouchGestureRecognizer_Example.release.xcconfig */; 610 | buildSettings = { 611 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 612 | CURRENT_PROJECT_VERSION = 1; 613 | DEFINES_MODULE = YES; 614 | DYLIB_COMPATIBILITY_VERSION = 1; 615 | DYLIB_CURRENT_VERSION = 1; 616 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 617 | ENABLE_STRICT_OBJC_MSGSEND = YES; 618 | INFOPLIST_FILE = "Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Info.plist"; 619 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 620 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; 621 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 622 | MODULEMAP_FILE = "Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Pods-DFContinuousForceTouchGestureRecognizer_Example.modulemap"; 623 | MTL_ENABLE_DEBUG_INFO = NO; 624 | OTHER_LDFLAGS = ""; 625 | OTHER_LIBTOOLFLAGS = ""; 626 | PODS_ROOT = "$(SRCROOT)"; 627 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 628 | PRODUCT_NAME = Pods_DFContinuousForceTouchGestureRecognizer_Example; 629 | SDKROOT = iphoneos; 630 | SKIP_INSTALL = YES; 631 | TARGETED_DEVICE_FAMILY = "1,2"; 632 | VERSIONING_SYSTEM = "apple-generic"; 633 | VERSION_INFO_PREFIX = ""; 634 | }; 635 | name = Release; 636 | }; 637 | B24E7A7EE63CB59C8FCEE052D682460D /* Debug */ = { 638 | isa = XCBuildConfiguration; 639 | baseConfigurationReference = F6F432D34BB6D3BCE560B2516D18B0CE /* Pods-DFContinuousForceTouchGestureRecognizer_Example.debug.xcconfig */; 640 | buildSettings = { 641 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 642 | CURRENT_PROJECT_VERSION = 1; 643 | DEFINES_MODULE = YES; 644 | DYLIB_COMPATIBILITY_VERSION = 1; 645 | DYLIB_CURRENT_VERSION = 1; 646 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 647 | ENABLE_STRICT_OBJC_MSGSEND = YES; 648 | INFOPLIST_FILE = "Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Info.plist"; 649 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 650 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; 651 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 652 | MODULEMAP_FILE = "Target Support Files/Pods-DFContinuousForceTouchGestureRecognizer_Example/Pods-DFContinuousForceTouchGestureRecognizer_Example.modulemap"; 653 | MTL_ENABLE_DEBUG_INFO = YES; 654 | OTHER_LDFLAGS = ""; 655 | OTHER_LIBTOOLFLAGS = ""; 656 | PODS_ROOT = "$(SRCROOT)"; 657 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 658 | PRODUCT_NAME = Pods_DFContinuousForceTouchGestureRecognizer_Example; 659 | SDKROOT = iphoneos; 660 | SKIP_INSTALL = YES; 661 | TARGETED_DEVICE_FAMILY = "1,2"; 662 | VERSIONING_SYSTEM = "apple-generic"; 663 | VERSION_INFO_PREFIX = ""; 664 | }; 665 | name = Debug; 666 | }; 667 | B32F814E61247E287DEBA20CEFB3486E /* Debug */ = { 668 | isa = XCBuildConfiguration; 669 | baseConfigurationReference = FAFE5094B56415758FD7ED560E5F6348 /* DFContinuousForceTouchGestureRecognizer-Private.xcconfig */; 670 | buildSettings = { 671 | ENABLE_STRICT_OBJC_MSGSEND = YES; 672 | PRODUCT_NAME = DFContinuousForceTouchGestureRecognizer; 673 | SDKROOT = iphoneos; 674 | SKIP_INSTALL = YES; 675 | WRAPPER_EXTENSION = bundle; 676 | }; 677 | name = Debug; 678 | }; 679 | B4134486597FBF2E44E30589106BCFEC /* Debug */ = { 680 | isa = XCBuildConfiguration; 681 | baseConfigurationReference = FAFE5094B56415758FD7ED560E5F6348 /* DFContinuousForceTouchGestureRecognizer-Private.xcconfig */; 682 | buildSettings = { 683 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 684 | CURRENT_PROJECT_VERSION = 0.1.0; 685 | DEFINES_MODULE = YES; 686 | DYLIB_COMPATIBILITY_VERSION = 0.1.0; 687 | DYLIB_CURRENT_VERSION = "$(CURRENT_PROJECT_VERSION)"; 688 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 689 | ENABLE_STRICT_OBJC_MSGSEND = YES; 690 | GCC_PREFIX_HEADER = "Target Support Files/DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer-prefix.pch"; 691 | INFOPLIST_FILE = "Target Support Files/DFContinuousForceTouchGestureRecognizer/Info.plist"; 692 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 693 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; 694 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 695 | MODULEMAP_FILE = "Target Support Files/DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer.modulemap"; 696 | MTL_ENABLE_DEBUG_INFO = YES; 697 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 698 | PRODUCT_NAME = DFContinuousForceTouchGestureRecognizer; 699 | SDKROOT = iphoneos; 700 | SKIP_INSTALL = YES; 701 | TARGETED_DEVICE_FAMILY = "1,2"; 702 | VERSIONING_SYSTEM = "apple-generic"; 703 | VERSION_INFO_PREFIX = ""; 704 | }; 705 | name = Debug; 706 | }; 707 | E0569DF294A0E2895EBCD2409012FB82 /* Release */ = { 708 | isa = XCBuildConfiguration; 709 | baseConfigurationReference = FAFE5094B56415758FD7ED560E5F6348 /* DFContinuousForceTouchGestureRecognizer-Private.xcconfig */; 710 | buildSettings = { 711 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 712 | CURRENT_PROJECT_VERSION = 0.1.0; 713 | DEFINES_MODULE = YES; 714 | DYLIB_COMPATIBILITY_VERSION = 0.1.0; 715 | DYLIB_CURRENT_VERSION = "$(CURRENT_PROJECT_VERSION)"; 716 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 717 | ENABLE_STRICT_OBJC_MSGSEND = YES; 718 | GCC_PREFIX_HEADER = "Target Support Files/DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer-prefix.pch"; 719 | INFOPLIST_FILE = "Target Support Files/DFContinuousForceTouchGestureRecognizer/Info.plist"; 720 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 721 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; 722 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 723 | MODULEMAP_FILE = "Target Support Files/DFContinuousForceTouchGestureRecognizer/DFContinuousForceTouchGestureRecognizer.modulemap"; 724 | MTL_ENABLE_DEBUG_INFO = NO; 725 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 726 | PRODUCT_NAME = DFContinuousForceTouchGestureRecognizer; 727 | SDKROOT = iphoneos; 728 | SKIP_INSTALL = YES; 729 | TARGETED_DEVICE_FAMILY = "1,2"; 730 | VERSIONING_SYSTEM = "apple-generic"; 731 | VERSION_INFO_PREFIX = ""; 732 | }; 733 | name = Release; 734 | }; 735 | /* End XCBuildConfiguration section */ 736 | 737 | /* Begin XCConfigurationList section */ 738 | 1A5633F9262F6B89CEF121D2057BED5A /* Build configuration list for PBXNativeTarget "DFContinuousForceTouchGestureRecognizer" */ = { 739 | isa = XCConfigurationList; 740 | buildConfigurations = ( 741 | B4134486597FBF2E44E30589106BCFEC /* Debug */, 742 | E0569DF294A0E2895EBCD2409012FB82 /* Release */, 743 | ); 744 | defaultConfigurationIsVisible = 0; 745 | defaultConfigurationName = Release; 746 | }; 747 | 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { 748 | isa = XCConfigurationList; 749 | buildConfigurations = ( 750 | 0B57334D6C23DADAA4F7D802A5760EB2 /* Debug */, 751 | 03CA91998D6773EC5D02B3DB87B8353E /* Release */, 752 | ); 753 | defaultConfigurationIsVisible = 0; 754 | defaultConfigurationName = Release; 755 | }; 756 | 836C28802E96639DA9F1B1AB1B7743E6 /* Build configuration list for PBXNativeTarget "Pods-DFContinuousForceTouchGestureRecognizer_Tests" */ = { 757 | isa = XCConfigurationList; 758 | buildConfigurations = ( 759 | 2BB52BC7208C2FC5084343B0E8DC5CCC /* Debug */, 760 | 09EBE6083A7AABA2A361A4EA038AB3C9 /* Release */, 761 | ); 762 | defaultConfigurationIsVisible = 0; 763 | defaultConfigurationName = Release; 764 | }; 765 | A3A278BB709D885E02AC41A05E8127CC /* Build configuration list for PBXNativeTarget "DFContinuousForceTouchGestureRecognizer-DFContinuousForceTouchGestureRecognizer" */ = { 766 | isa = XCConfigurationList; 767 | buildConfigurations = ( 768 | B32F814E61247E287DEBA20CEFB3486E /* Debug */, 769 | 2F28A30C6C1B7867CE4B65D2FE099E41 /* Release */, 770 | ); 771 | defaultConfigurationIsVisible = 0; 772 | defaultConfigurationName = Release; 773 | }; 774 | FAC6C8AE90FB69B8CF6C9DE686EADFA6 /* Build configuration list for PBXNativeTarget "Pods-DFContinuousForceTouchGestureRecognizer_Example" */ = { 775 | isa = XCConfigurationList; 776 | buildConfigurations = ( 777 | B24E7A7EE63CB59C8FCEE052D682460D /* Debug */, 778 | 470A3B62E3977C35F09445FB5A86304D /* Release */, 779 | ); 780 | defaultConfigurationIsVisible = 0; 781 | defaultConfigurationName = Release; 782 | }; 783 | /* End XCConfigurationList section */ 784 | }; 785 | rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 786 | } 787 | --------------------------------------------------------------------------------