diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e79617208..127939ac55 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,7 @@ - Adds an experiment to shorten init time. [Adlai Holler](https://github.com/Adlai-Holler) - Adds a check that Texture is compiled with stdc++11 as specified by the podfile. gnu++11 can cause subtle issues that are currently being investigated. [Adlai Holler](https://github.com/Adlai-Holler) - Adds an experiment to call ASNetworkImageNode callbacks off main. [Garrett Moon](https://github.com/garrettmoon) +- Prevent UITextView from updating contentOffset while deallocating [Michael Schneider](https://github.com/maicki) ## 2.6 - [Xcode 9] Updated to require Xcode 9 (to fix warnings) [Garrett Moon](https://github.com/garrettmoon) diff --git a/Source/TextKit/ASTextKitComponents.mm b/Source/TextKit/ASTextKitComponents.mm index dbb611b78f..2a741db481 100644 --- a/Source/TextKit/ASTextKitComponents.mm +++ b/Source/TextKit/ASTextKitComponents.mm @@ -20,7 +20,10 @@ #import -@interface ASTextKitComponentsTextView () +@interface ASTextKitComponentsTextView () { + // Prevent UITextView from updating contentOffset while deallocating: https://github.com/TextureGroup/Texture/issues/860 + BOOL _deallocating; +} @property (atomic, assign) CGRect threadSafeBounds; @end @@ -31,10 +34,16 @@ self = [super initWithFrame:frame textContainer:textContainer]; if (self) { _threadSafeBounds = self.bounds; + _deallocating = NO; } return self; } +- (void)dealloc +{ + _deallocating = YES; +} + - (void)setFrame:(CGRect)frame { ASDisplayNodeAssertMainThread(); @@ -49,6 +58,16 @@ self.threadSafeBounds = bounds; } +- (void)setContentOffset:(CGPoint)contentOffset +{ + if (_deallocating) { + return; + } + + [super setContentOffset:contentOffset]; +} + + @end @interface ASTextKitComponents ()