mirror of
https://github.com/zhigang1992/RETableViewManager.git
synced 2026-05-14 16:19:27 +08:00
Merge branch 'master' of https://github.com/romaonthego/RETableViewManager
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
// Appearance customization
|
||||
//
|
||||
@property (copy, readwrite, nonatomic) UIImage *expiredRibbonImage;
|
||||
@property (strong, readwrite, nonatomic) UIImage *expiredRibbonImage;
|
||||
|
||||
// Data and values
|
||||
//
|
||||
|
||||
@@ -45,11 +45,11 @@
|
||||
return self;
|
||||
}
|
||||
|
||||
-(UIImage *)expiredRibbonImage {
|
||||
- (UIImage *)expiredRibbonImage
|
||||
{
|
||||
if (!_expiredRibbonImage) {
|
||||
_expiredRibbonImage = [UIImage imageNamed:@"RETableViewManager.bundle/Ribbon_Expired"];
|
||||
}
|
||||
|
||||
return _expiredRibbonImage;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user