Fix empty ScrollView warnings
Summary:Currently, an empty `<ScrollView />` on iOS always throws the warning "Sticky header index 0 was outside the range {0, 0}". This is because the error-reporting code relies on the assumption that `stickyHeaderIndices` exists, and when it doesn't the error check thinks there's an index when there really isn't. Note that this only changes error reporting and won't affect apps out of debug mode. **Test plan** I created a sample app and included an empty `<ScrollView />`. Without this change the "Sticky header..." warning was displayed on every run through. With this change implemented, the warning went away. Closes https://github.com/facebook/react-native/pull/6417 Differential Revision: D3042178 Pulled By: nicklockwood fb-gh-sync-id: 7afefd428a5fcb03867bcb69e46c46fe1ae9151e shipit-source-id: 7afefd428a5fcb03867bcb69e46c46fe1ae9151e
This commit is contained in:
Родитель
6f7a305831
Коммит
299cd4cd01
|
@ -838,7 +838,10 @@ RCT_SCROLL_EVENT_HANDLER(scrollViewDidZoom, RCTScrollEventTypeMove)
|
||||||
if (RCT_DEBUG) {
|
if (RCT_DEBUG) {
|
||||||
// Validate that sticky headers are not out of range.
|
// Validate that sticky headers are not out of range.
|
||||||
NSUInteger subviewCount = _scrollView.contentView.reactSubviews.count;
|
NSUInteger subviewCount = _scrollView.contentView.reactSubviews.count;
|
||||||
NSUInteger lastIndex = _scrollView.stickyHeaderIndices.lastIndex;
|
NSUInteger lastIndex = NSNotFound;
|
||||||
|
if (_scrollView.stickyHeaderIndices != nil) {
|
||||||
|
lastIndex = _scrollView.stickyHeaderIndices.lastIndex;
|
||||||
|
}
|
||||||
if (lastIndex != NSNotFound && lastIndex >= subviewCount) {
|
if (lastIndex != NSNotFound && lastIndex >= subviewCount) {
|
||||||
RCTLogWarn(@"Sticky header index %zd was outside the range {0, %zd}",
|
RCTLogWarn(@"Sticky header index %zd was outside the range {0, %zd}",
|
||||||
lastIndex, subviewCount);
|
lastIndex, subviewCount);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче