2015-01-19 6 views
3

я называю UIAlertController так:UIAlertController меняет мои кнопки цвета

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"title" 
                     message:@"msg" 
                    preferredStyle:UIAlertControllerStyleAlert]; 

UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Accept" 
                style:UIAlertActionStyleDefault 
               handler:^(UIAlertAction *action) {/*...*/} 
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" 
                 style:UIAlertActionStyleCancel 
                handler:^(UIAlertAction *action) {/*...*/}]; 

[alertController addAction:cancelAction]; 
[alertController addAction:okAction]; 
[self presentViewController:alertController animated:YES completion:nil]; 

Моя проблема заключается в том, что, когда UIAlertController показано, она меняет цвет моей панели навигации от желтого до белого и светло-кнопку системы информации от синего до серого (это не выглядит неправильно, скорее похоже на желаемый эффект «сделать экран менее красочным»). Если пользователь нажимает кнопку «домой» в этот момент, приложение будет сохранять эти цвета, когда приложение снова войдет в фоновый режим (который выводит пользователя на экран входа в систему, который имеет белые/серые цвета).

Есть ли обходной путь к этой проблеме?

ответ

1

С iOS7, вид был снабжен различным поведением при отображении вида предупреждения:

При появлении листа предупреждения или действия, IOS, 7 автоматически приглушает оттенка цвета взглядов позади него. Чтобы ответить на это изменение цвета, подклассом пользовательского представления , который использует tintColor при его рендеринге, должно быть переопределить tintColorDidChange, чтобы обновить рендеринг, когда это необходимо.

Как написано, вы должны переопределить tintColorDidChange, проверить here

1

Это намеренное и происходит, когда представлено любое предупреждение. Это связано с тем, что интерактивные части (например, кнопки) ваших представлений не являются интерактивными, пока отображается предупреждение.

tintAdjustmentMode вид снизу будет изменен на UIViewTintAdjustmentModeDimmed, пока отображается предупреждение. Вы можете реализовать tintColorDidChange, чтобы ответить на это изменение, но, на мой взгляд, вы не должны.

+0

Ну, в основном у меня проблема, потому что есть случай, если пользователь активировал настройку «высокой безопасности», что окно изменено, а 'UIAlertController' никогда не закрывается. Вы знаете хороший способ закрыть все 'UIAlertControler'? – Daniel

+0

Нет, но с моей головы они будут доступны в качестве «Представленного контроля» любого VC, показывающего их – jrturton