Handle long and short taps in custom gesture recognizer

This commit is contained in:
Claus Höfele
2014-03-06 19:30:42 +01:00
parent a6af3e48b9
commit ab61fed1ec
7 changed files with 233 additions and 23 deletions

View File

@@ -9,6 +9,8 @@
/* Begin PBXBuildFile section */
623AC49518C11BAD000962A0 /* CCHLinkTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 623AC49418C11BAD000962A0 /* CCHLinkTextView.m */; };
626F837918C75FBC004FEABB /* CCHLinkTextViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 626F837818C75FBC004FEABB /* CCHLinkTextViewTests.m */; };
629350BF18C8841B000BFBA5 /* CCHLinkGestureRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 629350BE18C8841B000BFBA5 /* CCHLinkGestureRecognizer.m */; };
629350C118C89619000BFBA5 /* CCHLinkGestureRecognizerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 629350C018C89619000BFBA5 /* CCHLinkGestureRecognizerTests.m */; };
62F55CC118C1180200A7E1CC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62F55CC018C1180200A7E1CC /* Foundation.framework */; };
62F55CC318C1180200A7E1CC /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62F55CC218C1180200A7E1CC /* CoreGraphics.framework */; };
62F55CC518C1180200A7E1CC /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62F55CC418C1180200A7E1CC /* UIKit.framework */; };
@@ -39,6 +41,9 @@
623AC49418C11BAD000962A0 /* CCHLinkTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCHLinkTextView.m; sourceTree = "<group>"; };
623AC49618C11EAA000962A0 /* CCHLinkTextViewDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCHLinkTextViewDelegate.h; sourceTree = "<group>"; };
626F837818C75FBC004FEABB /* CCHLinkTextViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCHLinkTextViewTests.m; sourceTree = "<group>"; };
629350BD18C8841B000BFBA5 /* CCHLinkGestureRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCHLinkGestureRecognizer.h; sourceTree = "<group>"; };
629350BE18C8841B000BFBA5 /* CCHLinkGestureRecognizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCHLinkGestureRecognizer.m; sourceTree = "<group>"; };
629350C018C89619000BFBA5 /* CCHLinkGestureRecognizerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCHLinkGestureRecognizerTests.m; sourceTree = "<group>"; };
62F55CBD18C1180200A7E1CC /* CCHLinkTextView Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "CCHLinkTextView Example.app"; sourceTree = BUILT_PRODUCTS_DIR; };
62F55CC018C1180200A7E1CC /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
62F55CC218C1180200A7E1CC /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
@@ -89,6 +94,8 @@
623AC49318C11BAD000962A0 /* CCHLinkTextView.h */,
623AC49418C11BAD000962A0 /* CCHLinkTextView.m */,
623AC49618C11EAA000962A0 /* CCHLinkTextViewDelegate.h */,
629350BD18C8841B000BFBA5 /* CCHLinkGestureRecognizer.h */,
629350BE18C8841B000BFBA5 /* CCHLinkGestureRecognizer.m */,
);
name = CCHLinkTextView;
path = ../CCHLinkTextView;
@@ -154,6 +161,7 @@
isa = PBXGroup;
children = (
626F837818C75FBC004FEABB /* CCHLinkTextViewTests.m */,
629350C018C89619000BFBA5 /* CCHLinkGestureRecognizerTests.m */,
62F55CE618C1180200A7E1CC /* Supporting Files */,
);
path = "CCHLinkTextView ExampleTests";
@@ -268,6 +276,7 @@
623AC49518C11BAD000962A0 /* CCHLinkTextView.m in Sources */,
62F55CD718C1180200A7E1CC /* ViewController.m in Sources */,
62F55CD118C1180200A7E1CC /* AppDelegate.m in Sources */,
629350BF18C8841B000BFBA5 /* CCHLinkGestureRecognizer.m in Sources */,
62F55CCD18C1180200A7E1CC /* main.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -276,6 +285,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
629350C118C89619000BFBA5 /* CCHLinkGestureRecognizerTests.m in Sources */,
626F837918C75FBC004FEABB /* CCHLinkTextViewTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;

View File

@@ -23,6 +23,10 @@
{
[super viewDidLoad];
// selecteable = YES + copy & paste
// NSLinkAttribute -> textViewDelegate
// Data detectors
self.storyboardTextView.editable = NO;
self.storyboardTextView.selectable = NO;

View File

@@ -0,0 +1,44 @@
//
// CCHLinkGestureRecognizerTests.m
// CCHLinkTextView Example
//
// Created by Hoefele, Claus on 06.03.14.
// Copyright (c) 2014 Claus Höfele. All rights reserved.
//
#import "CCHLinkGestureRecognizer.h"
#import <UIKit/UIGestureRecognizerSubclass.h>
#import <XCTest/XCTest.h>
@interface CCHLinkGestureRecognizerTests : XCTestCase
@property (nonatomic, strong) CCHLinkGestureRecognizer *linkGestureRecognizer;
@end
@implementation CCHLinkGestureRecognizerTests
- (void)setUp
{
[super setUp];
self.linkGestureRecognizer = [[CCHLinkGestureRecognizer alloc] init];
}
- (void)testStateEnded
{
UITouch *touch = [[UITouch alloc] init];
NSSet *touches = [NSSet setWithObject:touch];
[self.linkGestureRecognizer touchesBegan:touches withEvent:nil];
XCTAssertEqual(self.linkGestureRecognizer.state, UIGestureRecognizerStateBegan);
[self.linkGestureRecognizer touchesMoved:touches withEvent:nil];
XCTAssertEqual(self.linkGestureRecognizer.state, UIGestureRecognizerStateBegan);
[self.linkGestureRecognizer touchesEnded:touches withEvent:nil];
XCTAssertEqual(self.linkGestureRecognizer.state, UIGestureRecognizerStateEnded);
}
@end