UITextView - отключить вертикальную прокрутку - PullRequest
4 голосов
/ 23 августа 2011

Как я могу отключить вертикальную прокрутку в моем UITextView?Я хочу, чтобы он просто прокручивался по горизонтали.

Ответы [ 7 ]

18 голосов
/ 23 августа 2011

В некоторых случаях при попытке ограничить нежелательную прокрутку UITextView я обнаружил, что полезно добавить что-то вроде следующего к делегату UITextView (это метод делегата UIScrollView, но, конечно, UITextView наследуется от UIScrollView).Это может работать для вас.

- (void)scrollViewDidScroll:(id)scrollView
{
      CGPoint origin = [scrollView contentOffset]; 
      [scrollView setContentOffset:CGPointMake(origin.x, 0.0)];
}

Как насчет свойства scrollEnabled?Установка для свойства scrollEnabled значения NO останавливает прокрутку пользователя (в обоих направлениях), но в некоторых случаях система отправляет setContentOffset:animated: сообщения в UITextView.Свойство scrollEnabled применяется как к вертикальной, так и к горизонтальной прокрутке.Учитывая ваш вопрос, вы можете оставить scrollEnabled как есть.

4 голосов
/ 03 июня 2016

Вы можете изменить его из Xcode -

Click here

3 голосов
/ 24 ноября 2017

Решение для отключения вертикальной прокрутки для Swift 4 :

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let origin: CGPoint = scrollView.contentOffset
    scrollView.contentOffset = CGPoint(x: origin.x, y: 0.0)
}
1 голос
/ 25 января 2016

Если у вас есть пользовательский подкласс textView, вы можете переопределить -gestureRecognizerShouldBegin, чтобы отключить прокрутку.

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]])
    {
        if (gestureRecognizer.view == self)
        {
            return NO;
        }
        else
        {
            return [super gestureRecognizerShouldBegin: gestureRecognizer];
        }
    }
}
0 голосов
/ 23 августа 2011

поместите ваш UITextView в UIScrollView. Установите для вашего UITextView.frame значение «Размер», в который помещается весь текст, и установите для contenSize ScrollView размер вашего UITextView.frame.

Приветствие nettz

0 голосов
/ 23 августа 2011

Просто установите contentSize на высоту просмотра.

Вы будете использовать это:

CGSize scrollableSize = CGSizeMake(widthOfContent, heightOfView);
[myScrollView setContentSize:scrollableSize];
0 голосов
/ 23 августа 2011

почему бы просто не использовать UITextField, если вы не хотите вертикальной прокрутки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...