2016-11-30 58 views
4

显然,this is a well known issue在升级到Xcode 8时反应原生。我按照this指南修复了我遇到的错误,但是当我的应用尝试加载时,我仍然收到以下错误<ScrollView/>组件。React Native升级到Xcode8后RCTCustomScrollView坏了

[RCTCustomScrollView refreshControl]: unrecognized selector sent to instance 0x16099e00

,每个人都似乎认为我RCTScrollView.m代码导致问题如下所示:

- (void)setRefreshControl:(RCTRefreshControl *)refreshControl 
{ 
    if (refreshControl) { 
    [refreshControl removeFromSuperview]; 
    } 
    refreshControl = refreshControl; 
    [self addSubview:refreshControl]; 
} 

- (void)removeReactSubview:(UIView *)subview 
{ 
    if ([subview isKindOfClass:[RCTRefreshControl class]]) { 
    _scrollView.refreshControl = nil; 
    } else { 
    RCTAssert(_contentView == subview, @"Attempted to remove non-existent subview"); 
    _contentView = nil; 
    [subview removeFromSuperview]; 
    } 
} 

一切似乎很好地工作,当我运行iOS 9.1.1的设备上运行此,但是当我尝试运行9.3的设备时,它在尝试加载<ScrollView/>时崩溃。

重要提示 - 我运行原生的反应和0.28是在紧张的情况下,我现在不能升级,因此我必须手动进行修复。

回答

0

我发现的唯一的解决办法是这样的,去RCTScrollView.m和替换[_scrollView refreshControl][_scrollView respondsToSelector: @selector(refreshControl)]

- (NSArray<UIView *> *)reactSubviews 
{ 
    if (_contentView && [_scrollView respondsToSelector: @selector(refreshControl)]) { 
    return @[_contentView, [_scrollView refreshControl]]; 
    } 
    return _contentView ? @[_contentView] : @[]; 
} 
0

我知道这是一个老帖子,但对于Xcode中8,的iOS 9.3(iPad的2/iPad的迷你),React Native 0.24.1,我在RCTScrollView.m中做了这个修改。

@implementation RCTCustomScrollView 
{ 
    __weak UIView *_dockedHeaderView; 

// Added the following line 
RCTRefreshControl *_refreshControl; 
} 
// Also added this 
@synthesize refreshControl = _refreshControl; 
相关问题