Different in Xcode12

HUA YU TSENG
2 min readSep 30, 2020
  1. UIDatePicker different style

Usually, we put DatePicker into TextField, everything is good and elegant until you build APP with Xcode 12 IDE, Let’s see what happen to DatePicker behavior in Xcode 12 build APP.

Too bad! User can’t select DatePicker any more
Too bad, User can’t select date anymore.

Solution 1: Using the iOS 14 new UIDatePicker UI 🤗

We need to make some modifications for the DatePicker which is set in the TextField input view.

if (@available(iOS 14.0, *)) {  [self.rightButton setHidden: NO];  UIButton *dateButton = [[UIButton alloc]  initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];  dateButton.backgroundColor = UIColor.clearColor;  [self addSubview:dateButton];  UIDatePicker *datePicker = [[UIDatePicker alloc]   initWithFrame:CGRectMake(0, 0, self.frame.size.width,  self.frame.size.height)];  [datePicker setDate: [NSDate date]];  [datePicker setMaximumDate: [NSDate date]];  [datePicker setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_TW"]];  [datePicker setDatePickerMode: UIDatePickerModeDate];  [datePicker addTarget:self action:@selector(updateBirthDay:)   forControlEvents:UIControlEventValueChanged];  [self addSubview:datePicker];} else {  [self.rightButton setHidden: NO];  UIDatePicker *datePicker = [UIDatePicker new];  [datePicker setDate: [NSDate date]];  [datePicker setMaximumDate: [NSDate date]];  [datePicker setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_TW"]];  [datePicker setDatePickerMode: UIDatePickerModeDate];  [datePicker addTarget:self action:@selector(updateBirthDay:)  forControlEvents:UIControlEventValueChanged];  [self setInputView: datePicker];}
Bravo! User can use the shiny new DatePicker style on their iOS 14 device.

Solution 2 : Using the old wheel UI style 😥

if (@available(iOS 14.0, *)) {UIDatePicker *datePicker = [[UIDatePicker alloc]   initWithFrame:CGRectMake(0, 0, self.frame.size.width,  self.frame.size.height)];datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels;[datePicker setDate: [NSDate date]];[datePicker setMaximumDate: [NSDate date]];[datePicker setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_TW"]];[datePicker setDatePickerMode: UIDatePickerModeDate];[datePicker addTarget:self action:@selector(updateBirthDay:)   forControlEvents:UIControlEventValueChanged];[self setInputView: datePicker];} else {[self.rightButton setHidden: NO];UIDatePicker *datePicker = [UIDatePicker new];[datePicker setDate: [NSDate date]];[datePicker setMaximumDate: [NSDate date]];[datePicker setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_TW"]];[datePicker setDatePickerMode: UIDatePickerModeDate];[datePicker addTarget:self action:@selector(updateBirthDay:)  forControlEvents:UIControlEventValueChanged];[self setInputView: datePicker];}

2. TableView cell element covered by content view

Solution 1: put elements into content view

[self.contentView addSubview: yourUIElementViews];

Solution 2: set content view UserInteractionEnabled to NO

[self.contentView setUserInteractionEnabled:NO];

--

--

HUA YU TSENG

I am Red, an iOS developer, I have hands on experience in iOS, Flutter, familiar with RxSwift Moya Unit/UI testing and Gitlab-CI.