From ea13d9f65b04404b8ebb9e9124b8af1e21e25087 Mon Sep 17 00:00:00 2001 From: tbb Date: Thu, 9 May 2019 14:58:49 +0800 Subject: [PATCH 1/3] adda method to handle index not changed --- .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++++++++ HMSegmentedControl/HMSegmentedControl.m | 5 +++++ 2 files changed, 13 insertions(+) create mode 100644 HMSegmentedControl.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/HMSegmentedControl.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/HMSegmentedControl.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/HMSegmentedControl.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/HMSegmentedControl/HMSegmentedControl.m b/HMSegmentedControl/HMSegmentedControl.m index abfcefa1..dfc8b856 100755 --- a/HMSegmentedControl/HMSegmentedControl.m +++ b/HMSegmentedControl/HMSegmentedControl.m @@ -804,6 +804,11 @@ - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { // Check if we have to do anything with the touch event if (self.isTouchEnabled) [self setSelectedSegmentIndex:segment animated:self.shouldAnimateUserSelection notify:YES]; + }else { + //Handle the index not changed + if (self.indexChangeBlock) { + self.indexChangeBlock(segment); + } } } } From d7c5c56d575d29803d5adc5f236cf5be3345dda1 Mon Sep 17 00:00:00 2001 From: tbb Date: Thu, 9 May 2019 16:07:00 +0800 Subject: [PATCH 2/3] add a parameter to change is index changede to handle the touch event --- HMSegmentedControl/HMSegmentedControl.h | 2 +- HMSegmentedControl/HMSegmentedControl.m | 4 ++-- HMSegmentedControlExample/ViewController.m | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/HMSegmentedControl/HMSegmentedControl.h b/HMSegmentedControl/HMSegmentedControl.h index cea60001..2a408199 100755 --- a/HMSegmentedControl/HMSegmentedControl.h +++ b/HMSegmentedControl/HMSegmentedControl.h @@ -10,7 +10,7 @@ @class HMSegmentedControl; -typedef void (^IndexChangeBlock)(NSInteger index); +typedef void (^IndexChangeBlock)(NSUInteger index, BOOL isChange); typedef NSAttributedString *(^HMTitleFormatterBlock)(HMSegmentedControl *segmentedControl, NSString *title, NSUInteger index, BOOL selected); typedef NS_ENUM(NSInteger, HMSegmentedControlSelectionStyle) { diff --git a/HMSegmentedControl/HMSegmentedControl.m b/HMSegmentedControl/HMSegmentedControl.m index dfc8b856..238eaf69 100755 --- a/HMSegmentedControl/HMSegmentedControl.m +++ b/HMSegmentedControl/HMSegmentedControl.m @@ -807,7 +807,7 @@ - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { }else { //Handle the index not changed if (self.indexChangeBlock) { - self.indexChangeBlock(segment); + self.indexChangeBlock(segment, NO); } } } @@ -944,7 +944,7 @@ - (void)notifyForSegmentChangeToIndex:(NSInteger)index { [self sendActionsForControlEvents:UIControlEventValueChanged]; if (self.indexChangeBlock) - self.indexChangeBlock(index); + self.indexChangeBlock(index, YES); } #pragma mark - Styling Support diff --git a/HMSegmentedControlExample/ViewController.m b/HMSegmentedControlExample/ViewController.m index 859e6720..5afd74d0 100644 --- a/HMSegmentedControlExample/ViewController.m +++ b/HMSegmentedControlExample/ViewController.m @@ -80,8 +80,8 @@ - (void)viewDidLoad { // Segmented control with more customization and indexChangeBlock HMSegmentedControl *segmentedControl3 = [[HMSegmentedControl alloc] initWithSectionTitles:@[@"One", @"Two", @"Three", @"4", @"Five"]]; [segmentedControl3 setFrame:CGRectMake(0, 180, viewWidth, 50)]; - [segmentedControl3 setIndexChangeBlock:^(NSInteger index) { - NSLog(@"Selected index %ld (via block)", (long)index); + [segmentedControl3 setIndexChangeBlock:^(NSUInteger index, BOOL isChange) { + NSLog(@"Selected index %ld,is changed %d", (long)index,isChange); }]; segmentedControl3.selectionIndicatorHeight = 4.0f; segmentedControl3.backgroundColor = [UIColor colorWithRed:0.1 green:0.4 blue:0.8 alpha:1]; @@ -109,9 +109,9 @@ - (void)viewDidLoad { self.segmentedControl4.tag = 3; __weak typeof(self) weakSelf = self; - [self.segmentedControl4 setIndexChangeBlock:^(NSInteger index) { - [weakSelf.scrollView scrollRectToVisible:CGRectMake(viewWidth * index, 0, viewWidth, 200) animated:YES]; - }]; +// [self.segmentedControl4 setIndexChangeBlock:^(NSInteger index) { +// [weakSelf.scrollView scrollRectToVisible:CGRectMake(viewWidth * index, 0, viewWidth, 200) animated:YES]; +// }]; [self.view addSubview:self.segmentedControl4]; From 20b200ecb0566d8382bcddce0688e3bce1c0a319 Mon Sep 17 00:00:00 2001 From: tbb Date: Thu, 9 May 2019 16:09:49 +0800 Subject: [PATCH 3/3] add a parameter to change is index changede to handle the touch event --- HMSegmentedControlExample/ViewController.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/HMSegmentedControlExample/ViewController.m b/HMSegmentedControlExample/ViewController.m index 5afd74d0..8540e85a 100644 --- a/HMSegmentedControlExample/ViewController.m +++ b/HMSegmentedControlExample/ViewController.m @@ -109,9 +109,9 @@ - (void)viewDidLoad { self.segmentedControl4.tag = 3; __weak typeof(self) weakSelf = self; -// [self.segmentedControl4 setIndexChangeBlock:^(NSInteger index) { -// [weakSelf.scrollView scrollRectToVisible:CGRectMake(viewWidth * index, 0, viewWidth, 200) animated:YES]; -// }]; + [self.segmentedControl4 setIndexChangeBlock:^(NSUInteger index, BOOL isChange) { + [weakSelf.scrollView scrollRectToVisible:CGRectMake(viewWidth * index, 0, viewWidth, 200) animated:YES]; + }]; [self.view addSubview:self.segmentedControl4];