Подтвердить что ты не робот

UITextView scrollEnabled = YES не работает после установки scrollEnabled = НЕТ в iOS8

Я создаю демоверсию для проверки UITextView scrollEnabled. Он содержит только 1 UITextView и 2 кнопки включения и выключения прокрутки

  • Я тестирую симулятор и устройство iOS 8, если я нажму кнопку отключения прокрутки, UITextView отключит прокрутку правильно, но после этого я нажмите кнопку включения прокрутки, UITextView не будет включать прокрутку

  • Тем не менее, я тестирую устройство iOS9, работа над прокруткой и отключением работает хорошо.

    #import "ViewController.h"
    
    @interface ViewController ()
    
        @property (weak, nonatomic) IBOutlet UITextView *myTextView;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    }
    
    - (IBAction)enableScrollButtonPressed:(id)sender{
        self.myTextView.scrollEnabled = YES;
    }
    
    - (IBAction)disableScrollButtonPressed:(id)sender{
        self.myTextView.scrollEnabled = NO;
    }
    
    @end
    

Любая идея исправить эту проблему? Если кто-то не понимает моего объяснения, пожалуйста, проверьте мой демонстрационный проект
Любая помощь или предложение были бы очень оценены

4b9b3361

Ответ 1

Проблема в том, что в iOS 8 contentSize неправильно настроен при изменении scrollEnabled. Небольшая настройка вашего метода enableScrollButtonPressed успешно справится с этой проблемой.

-(IBAction)enableScrollButtonPressed:(id)sender
{
    self.myTextView.scrollEnabled = YES;
    self.myTextView.contentSize = [self.myTextView sizeThatFits:self.myTextView.frame.size];
}

Ответ 2

Да, вы правы отключением и включение прокрутки textview не работает в iOS8, это может быть ошибка или что-то еще, пусть это будет. Мы можем отключить или включить прокрутку текстового вида, просто изменив ContentSize textview.

#import "ViewController.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UITextView *myTextView;

@end

 @implementation ViewController
-(IBAction)enableScrollButtonPressed:(id)sender{
    CGSize scrollableSize = CGSizeMake(self.myTextView.bounds.size.width+20, self.myTextView.bounds.size.height+20);
    [self.myTextView setContentSize:scrollableSize];
}

-(IBAction)disableScrollButtonPressed:(id)sender{
    [self.myTextView setContentOffset:CGPointMake(0, 0)];
    [self performSelector:@selector(StopScroll) withObject:nil afterDelay:0.1];
}

-(void)StopScroll{
    CGSize scrollableSize = CGSizeMake(self.myTextView.bounds.size.width, self.myTextView.bounds.size.height/2);
    [self.myTextView setContentSize:scrollableSize];
}

@end

Я тестировал приведенный выше код, он отлично работает для меня, используя xcode 7.2.1 и iOS 8.3. Попробуйте и дайте мне знать результат

Ответ 3

введите описание изображения здесь После поиска часов я нашел один путь

-(IBAction)enableScrollButtonPressed:(id)sender{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    self.myTextView.scrollEnabled = YES;
    [self.myTextView setText:self.myTextView.text];

    self.myTextView.layoutManager.allowsNonContiguousLayout = false;

});

}

-(IBAction)disableScrollButtonPressed:(id)sender{

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    self.myTextView.scrollEnabled = NO;
});

}

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

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

Ответ 4

вам нужно развернуть свои представления после включения или отключения просмотра прокрутки в вашем представлении.

использовать viewWillLayoutSubviews/layoutIfNeeded методы.

Ответ 5

Я пробовал свой код, и он работал нормально

IBOutlet UITextView *tv;

//---------Enable button action.

-(IBAction)enable:(id)sender
{
    tv.scrollEnabled=YES;
}

//---------Disable button action.

-(IBAction)disable:(id)sender
{
    tv.scrollEnabled=NO;
}

попробуйте код еще раз в устройстве.

Ответ 6

измените ваше свойство следующим образом.

в вашем коде.

@property (weak, nonatomic) IBOutlet UITextView *myTextView;

изменить атрибут свойства следующим образом:

@property (strong, nonatomic) IBOutlet UITextView *myTextView;

тогда все будет хорошо. я проверил его.

Ответ 7

Please follow below steps simply
self.myTextView.scrollEnabled = NO;
self.myTextView.userInteractionEnabled = YES;
self.myTextView.scrollEnabled = YES;

Ответ 8

Попробуйте этот

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    tableView.setContentOffset(CGPoint.zero, animated: false)
}