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
Любая идея исправить эту проблему? Если кто-то не понимает моего объяснения, пожалуйста, проверьте
мой демонстрационный проект
Любая помощь или предложение были бы очень оценены
Ответы
Ответ 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)
}