2016-02-23 3 views
1

У меня есть странная проблема при отображении режима DatePicker - Time в RTL.UIDatePicker Flips on iOS9 RTL

Im отображает программу выбора даты программно. Протокол должен быть на правой стороне, а часы на левой, и на следующем изображении вы можете увидеть это перевернуто:

enter image description here

Это происходит на прошивкой 9 и выше.

код я использую:

UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height+44, self.view.frame.size.width, 216)]; 
datePicker.tag = tag; 
[datePicker setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight]; 
[datePicker setDatePickerMode:UIDatePickerModeTime]; 
[datePicker setBackgroundColor:[UIColor whiteColor]]; 
[datePicker addTarget:self action:@selector(changeDate:) forControlEvents:UIControlEventValueChanged]; 
[self.view addSubview:datePicker]; 

Есть предложения?

+0

добавить свой метод выбора. – Arun

+0

- (void) changeDate: (UIDatePicker *) отправитель { NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat: @ "HH: mm"]; [dateFormatter setLocale: [NSLocale systemLocale]]; [dateFormatter setTimeZone: [NSTimeZone systemTimeZone]]; NSString * captStartDate = [dateFormatter stringFromDate: sender.date]; if (sender.tag == startDayDP) { [_startDayHour setText: captureStartDate]; } else { [_endDayHour setText: takenStartDate]; } [self ReloadNotifications]; } – user3660992

ответ

2

Я думаю, что это побочный эффект вашей установки .ForceRightToLeft на UIViewappearance прокси.

Если это так, обратите внимание, что это не поддерживается. Ваше приложение должно быть только в RTL, если это:

а) локализованы в языке RTL и

б) язык система устройства устанавливается на этот язык.

+1

«ForceRightToLeft» не влияет на представление. Я попытался удалить его/изменить, и ничего не изменилось. – user3660992

+0

Я не уверен, что понимаю. Мой вопрос: вы называете этот код в любом месте? '' '[Внешний вид UIView] .semanticContentAttribute = UISemanticContentAttributeForceRightToLeft''' – wakachamo

+0

На самом деле я использую' [[UIView appearance] setSemanticContentAttribute: UISemanticContentAttributeForceLeftToRight]; ''на моем AppDelegate. Но я должен использовать его, потому что у меня есть некоторые взгляды, которые должны быть слева направо. – user3660992

0

Это одно из подзаголовков, которое вызвало проблему в этом случае. , нажимая слева направо на всех подборах сборщиков, исправит это для вас.

1

Я решил это, нажимая forceRightToLeft на каждый подменю выбора даты.

Попробуйте сделать следующее и она должна работать:

override func viewDidLayoutSubviews() { 
    for currentView in datePicker.subviews { 
     currentView.semanticContentAttribute = .forceRightToLeft 
    } 
} 
0

Вы можете заставить все классы UIDatePicker быть РТЛ из AppDelegate.

if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9.0")) { 
    [[UIView appearanceWhenContainedIn:[UIDatePicker class], nil] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft]; 
} 
Смежные вопросы