mirror of
https://github.com/wu736139669/Doctor.git
synced 2026-08-05 05:55:05 +00:00
103 lines
3.6 KiB
Objective-C
103 lines
3.6 KiB
Objective-C
//
|
|
// IQSegmentedNextPrevious.m
|
|
// https://github.com/hackiftekhar/IQKeyboardManager
|
|
// Copyright (c) 2013-15 Iftekhar Qurashi.
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
// of this software and associated documentation files (the "Software"), to deal
|
|
// in the Software without restriction, including without limitation the rights
|
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
// copies of the Software, and to permit persons to whom the Software is
|
|
// furnished to do so, subject to the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in
|
|
// all copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
// THE SOFTWARE.
|
|
|
|
#import "IQSegmentedNextPrevious.h"
|
|
#import "IQKeyboardManagerConstantsInternal.h"
|
|
#import <Foundation/NSArray.h>
|
|
|
|
@interface IQSegmentedNextPrevious ()
|
|
|
|
// UISegmentedControl selector for value change.
|
|
- (void)segmentedControlHandler:(IQSegmentedNextPrevious*)sender;
|
|
|
|
@end
|
|
|
|
|
|
@implementation IQSegmentedNextPrevious
|
|
{
|
|
id buttonTarget;
|
|
SEL previousSelector;
|
|
SEL nextSelector;
|
|
}
|
|
|
|
// Initialize method
|
|
-(instancetype)initWithTarget:(id)target previousAction:(SEL)previousAction nextAction:(SEL)nextAction
|
|
{
|
|
// Creating it with two items, Previous/Next.
|
|
self = [super initWithItems:[NSArray arrayWithObjects:IQLocalizedString(@"Previous", nil),IQLocalizedString(@"Next", nil), nil]];
|
|
|
|
if (self)
|
|
{
|
|
if (IQ_IS_IOS7_OR_GREATER == NO)
|
|
{
|
|
#pragma GCC diagnostic push
|
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
|
[self setSegmentedControlStyle:UISegmentedControlStyleBar];
|
|
#pragma GCC diagnostic pop
|
|
}
|
|
|
|
[self setMomentary:YES];
|
|
[self setTintColor:[UIColor blackColor]];
|
|
// Adding self as it's valueChange selector.
|
|
[self addTarget:self action:@selector(segmentedControlHandler:) forControlEvents:UIControlEventValueChanged];
|
|
|
|
// Setting target and selectors.
|
|
buttonTarget = target;
|
|
previousSelector = previousAction;
|
|
nextSelector = nextAction;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
// Value has changed
|
|
- (void)segmentedControlHandler:(IQSegmentedNextPrevious*)sender
|
|
{
|
|
// Switching to selected segmenteIndex.
|
|
switch ([sender selectedSegmentIndex])
|
|
{
|
|
// Previous selected.
|
|
case 0:
|
|
{
|
|
// Invoking selector.
|
|
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[[buttonTarget class] instanceMethodSignatureForSelector:previousSelector]];
|
|
invocation.target = buttonTarget;
|
|
invocation.selector = previousSelector;
|
|
[invocation invoke];
|
|
}
|
|
break;
|
|
// Next selected.
|
|
case 1:
|
|
{
|
|
// Invoking selector.
|
|
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[[buttonTarget class] instanceMethodSignatureForSelector:nextSelector]];
|
|
invocation.target = buttonTarget;
|
|
invocation.selector = nextSelector;
|
|
[invocation invoke];
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
@end
|