Das Szenario ist:Wenn eine JS-Komponente in nativer UIView macht, wird die onPress nicht
JS -> Objective-C -> JS
Im Allgemeinen möchte ich eine JS-Komponente in einem einzubetten native UIView, und die JS-Ansicht sollte auf Benutzerinteraktionsereignisse wie onPress-Ereignis reagieren.
Details: In meinem JS Komponente, rief ich die IOS native Methode wie folgt aus:
var CategoryManager = NativeModules.CategoryManager;
CategoryManager.showCategoryPopup();
im showCategoryPopup() Objective-C-Methode, erstelle ich eine uiview und ein Subview der Mutter hinzufügen uiview wird die Subview von der JS-Komponente mit der RCTRootView Klasse erstellt:
UIView *parentView = [UIView new];
RCTRootView *subview_1 = [[RCTRootView alloc] initWithBridge:[[RCCManager sharedIntance] getBridge] moduleName:@"CategoryViewPopup" initialProperties:nil];
[parentView addSubview: subview_1];
hier die CategoryViewPopup
ist eine JS-Komponente:
export default class CategoryViewPopup extends Component {
constructor(props) {
super(props);
this.state = {
textToggle: false,
};
}
render() {
return (
<TouchableOpacity onPress={this.toggleText.bind(this)}>
<View style={{width: 100, height: 100, backgroundColor: 'red'}}>
<Text>{this.state.textToggle ? "Text 1" : "Text 2"}</Text>
</View>
</TouchableOpacity>
);
}
toggleText() {
this.setState({
textToggle: !this.state.textToggle,
});
}
}
Aber das Ereignis onPress
funktioniert nicht.
Danke!
Es ist kein Stil Problem, und ich habe Ihren Code getestet, es funktioniert auch nicht. Vielen Dank! – rockllei
sogar ich habe getestet und beim Drücken wurde der Text Text2 in Text1 geändert und umgekehrt ... –
Haben Sie es getestet, indem Sie die CategoryViewPopup-Komponente in eine UIView einbetten oder das CategoryViewPopup direkt in eine JS-Komponente rendern? – rockllei