Fabric: Additional checks for _eventEmitter being null in ScrollView

Summary:
I finally convinced that we need to add this everywhere.
iOS internals can call those methods at any moment (which is happening in coming diffs), so we cannot predict `_eventEmitter` being not null.

Reviewed By: mdvacca

Differential Revision: D16296052

fbshipit-source-id: 34447c2b5af4117d75930d68593d60bace119bbd
This commit is contained in:
Valentin Shergin
2019-07-17 11:20:51 -07:00
committed by Facebook Github Bot
parent 5f8c129f19
commit bf38cf1be9
@@ -169,16 +169,28 @@ using namespace facebook::react;
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (!_eventEmitter) {
return;
}
std::static_pointer_cast<const ScrollViewEventEmitter>(_eventEmitter)->onScroll([self _scrollViewMetrics]);
}
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
if (!_eventEmitter) {
return;
}
std::static_pointer_cast<const ScrollViewEventEmitter>(_eventEmitter)->onScroll([self _scrollViewMetrics]);
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
if (!_eventEmitter) {
return;
}
std::static_pointer_cast<const ScrollViewEventEmitter>(_eventEmitter)->onScrollBeginDrag([self _scrollViewMetrics]);
}
@@ -186,34 +198,58 @@ using namespace facebook::react;
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset
{
if (!_eventEmitter) {
return;
}
std::static_pointer_cast<const ScrollViewEventEmitter>(_eventEmitter)->onScrollEndDrag([self _scrollViewMetrics]);
}
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
if (!_eventEmitter) {
return;
}
std::static_pointer_cast<const ScrollViewEventEmitter>(_eventEmitter)
->onMomentumScrollBegin([self _scrollViewMetrics]);
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
if (!_eventEmitter) {
return;
}
std::static_pointer_cast<const ScrollViewEventEmitter>(_eventEmitter)->onMomentumScrollEnd([self _scrollViewMetrics]);
[self _updateStateWithContentOffset];
}
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
if (!_eventEmitter) {
return;
}
std::static_pointer_cast<const ScrollViewEventEmitter>(_eventEmitter)->onMomentumScrollEnd([self _scrollViewMetrics]);
[self _updateStateWithContentOffset];
}
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view
{
if (!_eventEmitter) {
return;
}
std::static_pointer_cast<const ScrollViewEventEmitter>(_eventEmitter)->onScrollBeginDrag([self _scrollViewMetrics]);
}
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale
{
if (!_eventEmitter) {
return;
}
std::static_pointer_cast<const ScrollViewEventEmitter>(_eventEmitter)->onScrollEndDrag([self _scrollViewMetrics]);
[self _updateStateWithContentOffset];
}