Reactネイティブコンポーネントを使用してUIImagePickerController
オーバーレイビューを定義したいとします。私は素晴らしいオプションであるマークシリングに新しいオプションを追加しようとしていますreact-native-image-picker。私は、ImagePickerManager.launchCamera
関数が<View>
と子をそのパラメータの1つとし、レンダリングしてそれをUIImagePickerController.cameraOverlayView
に渡すようにします。 ImagePickerManager.mでReactネイティブコンポーネントを使用したUIImagePickerControllerオーバーレイビュー
:私はこれまでのところ得
NSNumber *viewTag = [self.options valueForKey:@"overlayNode"];
if (![viewTag isEqual:[NSNull null]] && viewTag != 0) {
UIView *view = [_bridge.uiManager viewForReactTag:viewTag];
[self.picker setCameraOverlayView:view];
}
しかし、これはコンポーネントのインスタンスを取得するために、JS側にいくつかのねじれを行うために私を必要とします。
React.createClass({
render: function() {
return (
<View>
<TouchableHighlight onPress={this._showCamera}><Text>Camera</Text></TouchableHighlight>
<View ref="foo"><Text>On top of the camera!</Text></View>
</View>
);
},
_showCamera: function() {
var options = {
overlayNode: React.findNodeHandle(this.refs.foo),
};
ImagePickerManager.launchCamera(options, (response) => {
});
}
});
私はoverlayNode: React.findNodeHandle(<View ref="foo"><Text>On top of the camera!</Text></View>)
を言うしようとした場合、私はREDBOXを取得します。
新しいRCTRootView
を作成し、AppRegistry.registerComponent
でオーバーレイを登録してみましたが、実際に画面上に何も表示されませんでした。
NSString *overlayRootName = [self.options valueForKey:@"overlayComponentName"];
if (![overlayRootName isEqual:[NSNull null]] && overlayRootName.length != 0) {
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:self.bridge moduleName:overlayRootName initialProperties:nil];
[self.picker setCameraOverlayView:rootView];
}
ここでは何が欠けていますか?