2015-03-10 1 views
1

Я разрабатываю пользовательскую многоязычную клавиатуру для iphone и ipad, и я застрял в пользовательском интерфейсе, что я не могу сохранить правильный пользовательский интерфейс в случае изменения ориентации устройства.конфликт автосогласования с ограничением высоты в пользовательской клавиатуре

Моя конечная цель - добиться большей высоты клавиатуры (по умолчанию высота клавиатуры ios с предложениями) в режиме пейзажа + портрет + в устройствах iPhone + iPad.

Но как только я получаю автоматическое изменение размера (не авто макет), я не могу добавить ограничения на высоту клавиатуры (автоматическая раскладка отключена в файле Xib).

Если я добавлю ограничения, включив автомасштабирование, я потеряю авторезистентность подзонов, чтобы они отрегулировали себя в соответствии с экраном устройства.

Моя основная проблема заключается в том, что я не знаю, куда идти, чтобы я мог сосредоточиться только там.

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

- (void)updateViewConstraints { 
    [super updateViewConstraints]; 
    CGFloat _expandedHeight = 273; 
    NSLayoutConstraint *_heightConstraint = 
    [NSLayoutConstraint constraintWithItem: self.view 
           attribute: NSLayoutAttributeHeight 
           relatedBy: NSLayoutRelationEqual 
            toItem: nil 
           attribute: NSLayoutAttributeWidth 
           multiplier: 0.0 
            constant: _expandedHeight]; 
    [self.view addConstraint: _heightConstraint]; 


} 

-(void)viewDidAppear:(BOOL)animated { 
    self.inputView = (UIInputView *)Keyboard; 
     [self updateViewConstraints]; 
} 

-(void)viewWillAppear:(BOOL)animated{ 

    NSLog(@"viewWillAppear"); 
} 

-(void)viewWillLayoutSubviews{ 
    NSLog(@"viewWillLayoutSubviews"); 
    [self updateViewConstraints]; 
} 

Любое предложение было бы здорово! Спасибо заранее.

+0

'updateViewConstraints' добавит новое ограничение каждый раз при вызове. Вам также нужно рассмотреть возможность удаления. Это всего лишь предположение, что у меня нет полноценной области вашей проблемы. – Zahid

ответ

0

Лучшим способом избежать конфликтов ограничений в расширении клавиатуры будет:

  1. Создать вид клавиатуры фона, который будет содержать все подвиды из клавиатуры.
  2. Autolayout только вид фоновой подсветки клавиатуры с представлением корневого контроллера клавиатуры, чтобы сделать фоновый вид тем же фреймом, что и корневой вид. Не отключайте все остальные объекты .
  3. Вручную разметка всех подклассов клавиатуры в viewDidLayoutSubviews корневого контроллера клавиатуры после вызова [super viewDidLayoutSubviews].

Кроме того, при этом скорость запуска удлинителя клавиатуры будет значительно увеличена из-за гораздо меньшего количества вычислений автоматической компоновки.

+0

спасибо, я использую то, что вы говорите, и возвращайтесь к вам. также не могли бы вы подтвердить, что я должен создать все виды в определенном формате uiview, а затем автоматически отключить его, а не автоматически размещать что-либо еще. – Neelanshu

+0

невозможно сделать автомасштабирование только фоновых видов, так как оно будет применено ко всем другим представлениям. Возможно, я не смогу применить одно и то же, так что, пожалуйста, объясните немного подробнее. Спасибо – Neelanshu

Смежные вопросы