2016-04-09 3 views
0

Я пробовал много решений в популярном вопросе (Center text vertically in a UITextView)центр Текст Вертикально в UITextView не работает

Однако, когда я пытаюсь добавить код (мой projecr является Obj-C), (от с ответ .ka в):

- (void) viewDidLoad { 
    [textField addObserver:self forKeyPath:@"contentSize" options:(NSKeyValueObservingOptionNew) context:NULL]; 
    [super viewDidLoad]; 
} 


    -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{ 
    UITextView *tv = object; 
    CGFloat topCorrect = ([tv bounds].size.height - [tv  contentSize].height * [tv zoomScale])/2.0; 
    topCorrect = (topCorrect < 0.0 ? 0.0 : topCorrect); 
    [tv setContentInset:UIEdgeInsetsMake(topCorrect,0,0,0)]; 
} 

Я получаю следующее сообщение об ошибке: «использование необъявленной идентификатора" observeValueforKeyPath»

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

На стороне: похоже, это лучший ответ для центрирования текста iOS 7-9. Если он не будет работать на iOS 7-9 (у меня есть только те устройства iOS 9, с которыми нужно протестировать), дайте мне знать.

Я использую последнюю версию XCode.

Обновление: Я смог получить сообщение об ошибке (спасибо, Иман), но теперь это просто ничего не делает. Текст показывает, но он не центрирован. Если это помогает, мое текстовое представление называется quote_text, если это означает, что я должен пересмотреть код. Ни одно из решений не работает. Я в недоумении.

Спасибо!
Отделение

ответ

0

UPDATE

я думаю, потому что вы не используете Autolayout, Во всяком случае использовать этот код в методе viewDidLoad

CGFloat topCorrect = ([quote_text bounds].size.height - [quote_text contentSize].height * [quote_text zoomScale])/2.0; 
topCorrect = (topCorrect < 0.0 ? 0.0 : topCorrect); 
[quote_text setContentInset:UIEdgeInsetsMake(topCorrect,0,0,0)]; 
+0

Я не как это исправляет мою главную проблему? – Branch

+0

@Branch, что я получил от вашего вопроса, заключается в том, что вы хотите центрировать свой текст вертикально внутри текстового поля. я сделал обновление. Но можете ли вы подробнее рассказать о том, в чем проблема, с которой вы столкнулись? – Iman

+0

Итак, что будет работать вместо всего кода OP? Где в моем существующем коде я добавляю ваш код? @Iman – Branch

0
 [self.yourTextView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:NULL]; 

    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 

     { 
      UITextView *tv = object; 
      CGFloat topCorrect = ([tv bounds].size.height - [tv contentSize].height * tv.zoomScale)/2.0; 
      if (topCorrect < 0) { 
       topCorrect = 0.0; 
     } 
    tv.contentOffset = (CGPoint) { .x = 0, .y = -topCorrect }; 

+0

Нет, не работает! :(Я понятия не имею, что происходит на. – Branch

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