diff --git a/Students/Charlotte/ObjcTextInput/ObjcTextInput.xcodeproj/project.pbxproj b/Students/Charlotte/ObjcTextInput/ObjcTextInput.xcodeproj/project.pbxproj index 753ad22..f7e4bab 100644 --- a/Students/Charlotte/ObjcTextInput/ObjcTextInput.xcodeproj/project.pbxproj +++ b/Students/Charlotte/ObjcTextInput/ObjcTextInput.xcodeproj/project.pbxproj @@ -329,9 +329,11 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 2FQ38K642M; INFOPLIST_FILE = ObjcTextInput/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.icapps.ObjcTextInput; + PRODUCT_BUNDLE_IDENTIFIER = com.charlotteerpels.ObjcTextInput; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "ObjcTextInput/ObjcTextInput-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -346,9 +348,11 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 2FQ38K642M; INFOPLIST_FILE = ObjcTextInput/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.icapps.ObjcTextInput; + PRODUCT_BUNDLE_IDENTIFIER = com.charlotteerpels.ObjcTextInput; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "ObjcTextInput/ObjcTextInput-Bridging-Header.h"; SWIFT_VERSION = 4.0; diff --git a/Students/Charlotte/ObjcTextInput/ObjcTextInput/Base.lproj/Main.storyboard b/Students/Charlotte/ObjcTextInput/ObjcTextInput/Base.lproj/Main.storyboard index 524c98e..ffc8a66 100644 --- a/Students/Charlotte/ObjcTextInput/ObjcTextInput/Base.lproj/Main.storyboard +++ b/Students/Charlotte/ObjcTextInput/ObjcTextInput/Base.lproj/Main.storyboard @@ -4,7 +4,6 @@ - @@ -108,7 +107,7 @@ - + diff --git a/Students/Charlotte/ObjcTextInput/ObjcTextInput/Names List/TIIUIViewController.m b/Students/Charlotte/ObjcTextInput/ObjcTextInput/Names List/TIIUIViewController.m index c069bf0..bab118b 100644 --- a/Students/Charlotte/ObjcTextInput/ObjcTextInput/Names List/TIIUIViewController.m +++ b/Students/Charlotte/ObjcTextInput/ObjcTextInput/Names List/TIIUIViewController.m @@ -12,11 +12,12 @@ #import "TIIViewModel.h" #import -@interface TIIUIViewController () +@interface TIIUIViewController () @property (nonatomic, weak) IBOutlet UICollectionView * collectionView; @property (nonatomic, strong) TIIViewModel * viewModel; @property (assign, nonatomic) BOOL isEditing; @property (nonatomic, strong) UILongPressGestureRecognizer * longPressGesture; +@property (nonatomic, strong) id previewingContext; @end @implementation TIIUIViewController @@ -36,6 +37,10 @@ - (void)viewDidLoad { [self.collectionView addGestureRecognizer:self.longPressGesture]; [self.collectionView reloadData]; + + if([self isForceTouchAvailable]) { + self.previewingContext = [self registerForPreviewingWithDelegate:self sourceView:self.view]; + } } #pragma mark - UILongPressGesture @@ -195,6 +200,43 @@ -(void)collectionView:(UICollectionView *)collectionView performDropWithCoordina } } +#pragma mark - UIViewControllerPreviewingDelegate + +-(BOOL)isForceTouchAvailable { + BOOL isForceTouchAvailable = NO; + + if([self.traitCollection respondsToSelector:@selector(forceTouchCapability)]) { + isForceTouchAvailable = self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable; + } + + return isForceTouchAvailable; +} + +-(UIViewController *)previewingContext:(id)previewingContext viewControllerForLocation:(CGPoint)location { + CGPoint cellPosition = [self.collectionView convertPoint:location fromView:self.view]; + NSIndexPath * indexPath = [self.collectionView indexPathForItemAtPoint:cellPosition]; + + if(indexPath) { + TIILabelCollectionViewCell * cell = [self.collectionView cellForItemAtIndexPath:indexPath]; + UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; + TIIChangeTextViewController * previewController = [storyboard instantiateViewControllerWithIdentifier:@"TIIChangeTextViewController"]; + + previewController.originalText = [self.viewModel objectForIndexPath:indexPath]; + previewController.itemIndex = indexPath; + + previewingContext.sourceRect = [self.view convertRect:cell.frame fromView:self.collectionView]; + + return previewController; + } + + return nil; +} + +-(void)previewingContext:(id)previewingContext commitViewController:(UIViewController *)viewControllerToCommit { + TIIChangeTextViewController * changeTextViewController = viewControllerToCommit; + changeTextViewController.delegate = self; + [self presentViewController:changeTextViewController animated:YES completion:nil]; +} @end