Skip to content

Commit 91e9e9d

Browse files
authored
fix: ios layout issues (#209)
Fixes: - scrolling on iOS - which was unresponsive in some circumstances - invisible text in 5th line - super weird edge case
1 parent 4bb30ad commit 91e9e9d

2 files changed

Lines changed: 9 additions & 3 deletions

File tree

example/src/App.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,7 @@ const htmlStyle: HtmlStyle = {
411411
const styles = StyleSheet.create({
412412
container: {
413413
flex: 1,
414+
backgroundColor: 'white',
414415
},
415416
content: {
416417
flexGrow: 1,

ios/EnrichedTextInputView.mm

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1091,10 +1091,15 @@ - (void)anyTextMayHaveBeenModified {
10911091
[self tryUpdatingHeight];
10921092
// update active styles as well
10931093
[self tryUpdatingActiveStyles];
1094+
10941095
// update drawing
1095-
NSRange wholeRange = NSMakeRange(0, textView.textStorage.string.length);
1096-
[textView.layoutManager invalidateLayoutForCharacterRange:wholeRange actualCharacterRange:nullptr];
1097-
[textView.layoutManager invalidateDisplayForCharacterRange:wholeRange];
1096+
dispatch_async(dispatch_get_main_queue(), ^{
1097+
NSRange wholeRange = NSMakeRange(0, textView.textStorage.string.length);
1098+
NSRange actualRange = NSMakeRange(0, 0);
1099+
[textView.layoutManager invalidateLayoutForCharacterRange:wholeRange actualCharacterRange:&actualRange];
1100+
[textView.layoutManager ensureLayoutForCharacterRange:actualRange];
1101+
[textView.layoutManager invalidateDisplayForCharacterRange:wholeRange];
1102+
});
10981103
}
10991104

11001105
// MARK: - UITextView delegate methods

0 commit comments

Comments
 (0)