Tekst UITextView nie zaczyna się od góry


Mam
UITextView
. Chcę, aby jego tekst zaczynał się na górze, ale nie na górze. Spójrz na mój kod:
UITextView *myTextView = [[UITextView alloc] init];
myTextView.frame = rect;
myTextView.editable = NO;
myTextView.font = [UIFont fontWithName:@"Helvetica" size:MAIN_FONT_SIZE];
myTextView.backgroundColor = [UIColor clearColor];
myTextView.text = sourceNode.label;
myTextView.dataDetectorTypes = UIDataDetectorTypeAll;
[cell.contentView addSubview:myTextView];
[myTextView sizeToFit];
[self alignTextToTopTextView:myTextView];


alignTextToTopTextView

:
-(void)alignTextToTopTextView :(UITextView*)textView{ CGRect frame = textView.frame;
frame.size.height = textView.contentSize.height;
textView.frame = frame;
}


Zobacz zrzut ekranu poniżej

.
UITextView
znajduje się po prawej stronie.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Ustaw wstawianie zawartości w następujący sposób w UITextView
youtextView.contentInset = UIEdgeInsetsMake(-7.0,0.0,0,0.0);

Dostosuj najwyższą wartość tak, jak chcesz. to powinno rozwiązać twój problem.

EDIT

:
Jeśli masz problemy z iOS7 lub nowszym, spróbuj użyć ...

[YouTextview SetContent Ffset: CGOpointMake (X, D) animowany: Bool];
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

w metodzie viewDidLoad add
self.automaticallyAdjustsScrollViewInsets = false
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dokładnie to zrobiłem. Gdy przewijanie jest wyłączone, tekst jest ładowany od góry. Po załadowaniu włącz przewijanie.
- (void)viewDidLoad{
myTextView.scrollEnabled = NO;
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
myTextView.scrollEnabled = YES;
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Żadne z istniejących rozwiązań nie pomogło, ale to

pomógł

:
Objective-C:
- (void)viewDidLayoutSubviews {
[self.yourTextView setContentOffset:CGPointZero animated:NO];
}


Swift 3

:
override func viewDidLayoutSubviews() {
textView.setContentOffset(CGPoint(x: 0, y: 0), animated: false)
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

To jest to, czego używam
textView.textContainerInset = 
UIEdgeInsetsMake( 0,
-textView.textContainer.lineFragmentPadding,
0,
-textView.textContainer.lineFragmentPadding
)
;
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

self.yourTextView.scrollEnabled = NO;self.yourTextView.textContainerInset = UIEdgeInsetsMake(0, 0, 0, 0);
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

- (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;
//Center vertical alignment
//CGFloat topCorrect = ([tv bounds].size.height - [tv contentSize].height * [tv zoomScale])/2.0;
//topCorrect = ( topCorrect < 0.0 ? 0.0 : topCorrect );
//tv.contentOffset = (CGPoint){.x = 0, .y = -topCorrect};//Bottom vertical alignment
CGFloat topCorrect = ([tv bounds].size.height - [tv contentSize].height);
topCorrect = (topCorrect <0.0 ? 0.0 : topCorrect);
tv.contentOffset = (CGPoint){.x = 0, .y = -topCorrect};
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Oto twoja odpowiedź
w swiftowym roku
termsTextView.contentOffset = CGPointMake(0, -220)

w roku Objective-C
[termsTextView setContentOffset: CGPointMake(0,-220) animated:NO];
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dzieje się tak po ustawieniu właściwości
autoresizingMask
UITextView
w systemach iOS 7 i 8.
Znalazłem opcjonalne obejście:
- (void)viewWillAppear:(BOOL)animated {
[super viewDidAppear:animated];
[yourTextView scrollRectToVisible:CGRectMake(0, 0, yourTextView.contentSize.width, 10) animated:NO];
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli chcesz, aby widoki tekstu umieszczone w scenorysach ładowały się poprawnie bez dodawania kontrolera widoku, zrobi to (iOS 12, Swift 4.2):
<pre class="lang-swift prettyprint-override">
final class UITopLoadingTextView: UITextView { var shouldEnableScroll = false required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
shouldEnableScroll = isScrollEnabled
self.isScrollEnabled = false
} override func layoutSubviews() {
super.layoutSubviews()
isScrollEnabled = shouldEnableScroll
}
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

rozwiązanie swift 4:
self.textView.scrollRangeToVisible(NSMakeRange(0, 0))

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się