UITextView setContentSize не работает?

Я хочу изменить размер содержимого моего UITextView, и я попробовал, как показано ниже:

[self.textView setContentSize:CGSizeMake(self.textView.contentSize.width, self.textView.contentSize.height+30)];

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

- (IBAction)click:(id)sender {
    static int y = 0;
    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, y, 30, 30)];
    label.text = @"hello";
    y = y+30;
    [self.textView setContentSize:CGSizeMake(self.textView.contentSize.width, self.textView.contentSize.height+30)];
    NSLog(@"%f",self.textView.contentSize.height);
    [self.textView addSubview:label];
}

В результате setContentSize не работает? Более того, contentSize просто меняется для изменения текстового содержимого.

Я хочу знать, почему, и есть ли способ изменить размер содержимого UITextView вручную?

ДОПОЛНЕНИЕ: вывод для действия клика

2014-11-17 17:05:56.306 viewControllerAdvance[2371:607] 82.000000 
2014-11-17 17:05:56.455 viewControllerAdvance[2371:607] 82.000000
2014-11-17 17:05:56.638 viewControllerAdvance[2371:607] 82.000000
2014-11-17 17:05:56.772 viewControllerAdvance[2371:607] 82.000000
2014-11-17 17:05:56.923 viewControllerAdvance[2371:607] 82.000000
2014-11-17 17:05:57.072 viewControllerAdvance[2371:607] 82.000000

person Daizy    schedule 17.11.2014    source источник
comment
Не могли бы вы опубликовать свой NSLog(@%f,self.textView.contentSize.height); значения после вызова - (IBAction) нажмите: (id) метод отправителя несколько раз?   -  person thavasidurai    schedule 17.11.2014
comment
Вы уверены, что вам нужно установить размер содержимого или рамку   -  person Ramesh Muthe    schedule 17.11.2014
comment
Когда вы пишете текст в текстовом виде, размер содержимого автоматически увеличивается, и почему вам нужно установить его вручную?   -  person Ramesh Muthe    schedule 17.11.2014
comment
@RameshMuthe, на самом деле, я хочу изменить некоторые слова содержимого на теги (возможно, с помощью UILabel), точно так же, как добавление тегов StackOverFlow. Так что, возможно, высота текстового представления не является высотой слова содержимого.   -  person Daizy    schedule 17.11.2014
comment
Просто сделайте перекрестную проверку один раз, сбрасываете ли вы размер содержимого или снова выделяете текстовое представление.   -  person thavasidurai    schedule 17.11.2014
comment
@thavasidurai, не могли бы вы рассказать об этом подробнее? Я первокурсник. :p   -  person Daizy    schedule 17.11.2014
comment
Вы выделяете или сбрасываете (размер содержимого) текстовое представление в любом месте после нажатия кнопки?   -  person thavasidurai    schedule 17.11.2014
comment
попробуйте изменить эту строку вместо вашей [self.textView setContentSize:CGSizeMake(self.textView.contentSize.width, self.textView.contentSize.height+y)];   -  person Shankar BS    schedule 17.11.2014
comment
скажите мне ваше точное требование, и я думаю, что таким образом вы не можете справиться с текстовым представлением. Если возможно, добавьте изображение, которое вам нужно, и подумайте о другом решении.   -  person Ramesh Muthe    schedule 17.11.2014
comment
Вы используете авторазметку?   -  person Kiran Thapa    schedule 17.11.2014
comment
@RameshMuthe, я просто хочу сделать поле ввода, которое может превращать слова в теги. Это похоже на добавление тегов в Stack overflow, когда вы хотите задать вопрос. Некоторые из ваших слов могут превратиться в теги, и вы сможете продолжать вводить их после тегов. Я хочу сделать теги в стиле inline в своем текстовом поле   -  person Daizy    schedule 17.11.2014
comment
@KiranThapa, я не знаю, как это проверить?   -  person Daizy    schedule 17.11.2014
comment
@ Шан, я думаю, что это не ответ.   -  person Daizy    schedule 17.11.2014
comment
я знаю, но ваш вид контента увеличивается в высоту   -  person Shankar BS    schedule 17.11.2014
comment
Щелкните раскадровку или xib-файл. На панели инспектора файлов (Вид -> Утилиты -> Показать инспектор файлов) есть раздел Документ построителя интерфейсов. Там вы найдете флажок для того, используете ли вы автоматическую раскладку или нет.   -  person Kiran Thapa    schedule 17.11.2014


Ответы (1)


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

- (IBAction)click:(id)sender { 

     static int y = 0;
     UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, y, 30, 30)];
     label.text = @"hello";
     y = y+30;
     [self.textView addSubview:label];

     CGFloat fixedWidth = textView.frame.size.width;
     CGFloat dynamicHeight = textView.frame.size.height+30;

     CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, dynamicHeight)];
     CGRect newFrame = textView.frame;
     newFrame.size = CGSizeMake(fixedWidth, fmaxf(newSize.height, dynamicHeight));
     textView.frame = newFrame;

 }

Также установите textview.scrollEnabled = NO;

person thavasidurai    schedule 17.11.2014
comment
Да, это действительно соответствует моему требованию! Большое спасибо!! Но почему setContentSize не работает? - person Daizy; 17.11.2014
comment
Посмотрите на этот stackoverflow .com/questions/19837178/ кажется, установка размера контента может не работать в iOS 7 - person thavasidurai; 17.11.2014