This commit is contained in:
Fedya Skitsko
2013-10-04 17:17:54 +03:00
8 changed files with 44 additions and 37 deletions

View File

@@ -205,6 +205,11 @@ Please note that if your installation fails, it may be because you are installin
<td>RETableViewDateTimeCell</td>
<td>Provides convenience for modifying date in <tt>NSDate</tt> objects.</td>
</tr>
<tr>
<td>REPickerItem</td>
<td>RETableViewPickerCell</td>
<td>Provides convenience for selecting multiple options using <tt>UIPickerView</tt></td>
</tr>
<tr>
<td>RECreditCardItem</td>
<td>RETableViewCreditCardCell</td>

View File

@@ -38,24 +38,24 @@
@property (strong, readwrite, nonatomic) REFormattedNumberField *creditCardField;
@property (strong, readwrite, nonatomic) REFormattedNumberField *expirationDateField;
@property (strong, readwrite, nonatomic) REFormattedNumberField *cvvField;
@property (strong, readwrite, nonatomic) UIImageView *ribbonExpired;
@end
@implementation RETableViewCreditCardCell
static inline BOOL isExpired(NSString *creditCardExpirationDate) {
if([creditCardExpirationDate isEqualToString:@""])
static inline BOOL RECreditCardExpired(NSString *creditCardExpirationDate)
{
if ([creditCardExpirationDate isEqualToString:@""])
return NO;
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"MM/yy"];
NSDate *cardDate = [f dateFromString:creditCardExpirationDate];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"MM/yy";
NSDate *cardDate = [dateFormatter dateFromString:creditCardExpirationDate];
NSDateComponents *comp = [[NSCalendar currentCalendar] components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]];
[comp setDay:1];
NSDate *firstDayOfMonthDate = [[NSCalendar currentCalendar] dateFromComponents:comp];
NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]];
dateComponents.day = 1;
NSDate *firstDayOfMonthDate = [[NSCalendar currentCalendar] dateFromComponents:dateComponents];
return [cardDate laterDate:firstDayOfMonthDate] == firstDayOfMonthDate;
}
@@ -198,7 +198,7 @@ static inline NSString * RECreditCardType(NSString *creditCardNumber)
frame.size.height = self.contentView.frame.size.height;
self.cvvField.frame = frame;
self.ribbonExpired.frame = CGRectMake(CGRectGetWidth(self.contentView.frame) - self.ribbonExpired.image.size.width + 1, -2, self.ribbonExpired.image.size.width, self.ribbonExpired.image.size.height);
self.ribbonExpired.frame = CGRectMake(CGRectGetWidth(self.contentView.frame) - self.ribbonExpired.image.size.width + 1 + (REUIKitIsFlatMode() ? 1 : 0), -2, self.ribbonExpired.image.size.width, self.ribbonExpired.image.size.height);
if ([self.tableViewManager.delegate respondsToSelector:@selector(tableView:willLayoutCellSubviews:forRowAtIndexPath:)])
[self.tableViewManager.delegate tableView:self.tableViewManager.tableView willLayoutCellSubviews:self forRowAtIndexPath:[self.tableViewManager.tableView indexPathForCell:self]];
@@ -233,7 +233,6 @@ static inline NSString * RECreditCardType(NSString *creditCardNumber)
if (textField.tag == 1) self.item.expirationDate = textField.text;
if (textField.tag == 2) self.item.cvv = textField.text;
NSString *issuer = RECreditCardType(self.item.number);
if (issuer) {
self.creditCardImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"RETableViewManager.bundle/Card_%@", issuer]];
@@ -293,18 +292,18 @@ static inline NSString * RECreditCardType(NSString *creditCardNumber)
{
[self performSelector:@selector(flipCreditCardImageViewBack:) withObject:textField afterDelay:0.1];
if(textField == self.expirationDateField) {
if(isExpired(self.expirationDateField.text)) {
if (textField == self.expirationDateField) {
if (RECreditCardExpired(self.expirationDateField.text)) {
self.ribbonExpired.hidden = NO;
} else {
self.ribbonExpired.hidden = YES;
}
}
return YES;
}
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField == self.expirationDateField) {
if (range.location == 1) {
NSInteger month = [NSString stringWithFormat:@"%@%@", self.expirationDateField.text, string].integerValue;
@@ -313,7 +312,6 @@ static inline NSString * RECreditCardType(NSString *creditCardNumber)
}
}
}
return YES;
}

View File

@@ -83,6 +83,10 @@
self.textField.secureTextEntry = self.item.secureTextEntry;
self.textField.clearButtonMode = self.item.clearButtonMode;
self.textField.clearsOnBeginEditing = self.item.clearsOnBeginEditing;
if (REUIKitIsFlatMode()) {
self.actionBar.barStyle = self.item.keyboardAppearance == UIKeyboardAppearanceDark ? UIBarStyleBlack : UIBarStyleDefault;
}
}
- (UIResponder *)responder

View File

@@ -29,7 +29,7 @@
// Appearance customization
//
@property (copy, readwrite, nonatomic) UIImage *expiredRibbonImage;
@property (strong, readwrite, nonatomic) UIImage *expiredRibbonImage;
// Data and values
//

View File

@@ -45,11 +45,11 @@
return self;
}
-(UIImage *)expiredRibbonImage {
- (UIImage *)expiredRibbonImage
{
if (!_expiredRibbonImage) {
_expiredRibbonImage = [UIImage imageNamed:@"RETableViewManager.bundle/Ribbon_Expired"];
}
return _expiredRibbonImage;
}

View File

@@ -28,21 +28,21 @@
@interface RESegmentItem : RETableViewItem
@property (assign, readwrite, nonatomic) int value;
@property (assign, readwrite, nonatomic) NSInteger value;
@property (copy, readwrite, nonatomic) NSArray *titles;
@property (copy, readwrite, nonatomic) NSArray *images;
@property (copy, readwrite, nonatomic) void (^switchValueChangeHandler)(RESegmentItem *item);
+ (instancetype)itemWithTitles:(NSArray *)titles value:(int)value switchValueChangeHandler:(void(^)(RESegmentItem *item))switchValueChangeHandler;
+ (instancetype)itemWithTitles:(NSArray *)titles value:(int)value;
+ (instancetype)itemWithTitles:(NSArray *)titles value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentItem *item))switchValueChangeHandler;
+ (instancetype)itemWithTitles:(NSArray *)titles value:(NSInteger)value;
- (id)initWithTitles:(NSArray *)titles value:(int)value switchValueChangeHandler:(void(^)(RESegmentItem *item))switchValueChangeHandler;
- (id)initWithTitles:(NSArray *)titles value:(int)value;
- (id)initWithTitles:(NSArray *)titles value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentItem *item))switchValueChangeHandler;
- (id)initWithTitles:(NSArray *)titles value:(NSInteger)value;
+ (instancetype)itemWithImages:(NSArray *)images value:(int)value switchValueChangeHandler:(void(^)(RESegmentItem *item))switchValueChangeHandler;
+ (instancetype)itemWithImages:(NSArray *)images value:(int)value;
+ (instancetype)itemWithImages:(NSArray *)images value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentItem *item))switchValueChangeHandler;
+ (instancetype)itemWithImages:(NSArray *)images value:(NSInteger)value;
- (id)initWithImages:(NSArray *)images value:(int)value switchValueChangeHandler:(void(^)(RESegmentItem *item))switchValueChangeHandler;
- (id)initWithImages:(NSArray *)images value:(int)value;
- (id)initWithImages:(NSArray *)images value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentItem *item))switchValueChangeHandler;
- (id)initWithImages:(NSArray *)images value:(NSInteger)value;
@end

View File

@@ -28,22 +28,22 @@
@implementation RESegmentItem
+ (instancetype)itemWithTitles:(NSArray *)titles value:(int)value
+ (instancetype)itemWithTitles:(NSArray *)titles value:(NSInteger)value
{
return [[self alloc] initWithTitles:titles value:value];
}
+ (instancetype)itemWithTitles:(NSArray *)titles value:(int)value switchValueChangeHandler:(void(^)(RESegmentItem *item))switchValueChangeHandler
+ (instancetype)itemWithTitles:(NSArray *)titles value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentItem *item))switchValueChangeHandler
{
return [[self alloc] initWithTitles:titles value:value switchValueChangeHandler:switchValueChangeHandler];
}
- (id)initWithTitles:(NSArray *)titles value:(int)value
- (id)initWithTitles:(NSArray *)titles value:(NSInteger)value
{
return [self initWithTitles:titles value:value switchValueChangeHandler:nil];
}
- (id)initWithTitles:(NSArray *)titles value:(int)value switchValueChangeHandler:(void(^)(RESegmentItem *item))switchValueChangeHandler
- (id)initWithTitles:(NSArray *)titles value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentItem *item))switchValueChangeHandler
{
self = [super init];
if (!self)
@@ -56,22 +56,22 @@
return self;
}
+ (instancetype)itemWithImages:(NSArray *)images value:(int)value
+ (instancetype)itemWithImages:(NSArray *)images value:(NSInteger)value
{
return [[self alloc] initWithImages:images value:value];
}
+ (instancetype)itemWithImages:(NSArray *)images value:(int)value switchValueChangeHandler:(void(^)(RESegmentItem *item))switchValueChangeHandler
+ (instancetype)itemWithImages:(NSArray *)images value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentItem *item))switchValueChangeHandler
{
return [[self alloc] initWithImages:images value:value switchValueChangeHandler:switchValueChangeHandler];
}
- (id)initWithImages:(NSArray *)images value:(int)value
- (id)initWithImages:(NSArray *)images value:(NSInteger)value
{
return [self initWithImages:images value:value switchValueChangeHandler:nil];
}
- (id)initWithImages:(NSArray *)images value:(int)value switchValueChangeHandler:(void(^)(RESegmentItem *item))switchValueChangeHandler
- (id)initWithImages:(NSArray *)images value:(NSInteger)value switchValueChangeHandler:(void(^)(RESegmentItem *item))switchValueChangeHandler
{
self = [super init];
if (!self)

View File

@@ -5,7 +5,7 @@
<key>IDESourceControlProjectFavoriteDictionaryKey</key>
<false/>
<key>IDESourceControlProjectIdentifier</key>
<string>AC51E472-AA8F-45F9-9AB5-7F92CDB58A22</string>
<string>969334AC-9973-4091-8346-58E1E6316282</string>
<key>IDESourceControlProjectName</key>
<string>RETableViewManagerExample</string>
<key>IDESourceControlProjectOriginsDictionary</key>