react-native-macos
react-native-macos copied to clipboard
onpress emit in error area when view use transform
Is this a bug report?
yes
Have you read the Contributing Guidelines?
yes
Environment
Environment: OS: macOS High Sierra 10.13.6 Node: 8.3.0 Yarn: 1.12.3 npm: 5.3.0 Watchman: 4.9.0 Xcode: Xcode 10.1 Build version 10B61 Android Studio: Not Found
Packages: (wanted => installed) react: 16.2.0 => 16.2.0 react-native: Not Found
Target Platform: macos
Steps to Reproduce
- init a project use
react-native-macos init xxx
- run js code below (click red area and move it to left 10px)
- click lower half of red area,not work.
Expected Behavior
emit click in [100,300] of y.
Actual Behavior
emit click in [0, 200] of y.
code
class Demo extends React.Component {
constructor(props){
super(props);
this.state = {
left: 100,
};
}
render() {
return (
<TouchableOpacity
onPress={()=> this.setState({left: this.state.left+10})}
style={{position:"absolute", right:this.state.left,width:200,height:200,transform:[{translateY:100}],backgroundColor:"red"}}>
</TouchableOpacity>
);
}
}
#228 might fix this for you. You'll need to replace NSWindow
usage with RCTWindow
.
228 dos't work.😒
I change the hitTest
method of RCTView
,It can work for my demo now, but I think it also has some bugs. -.-
hope for your help.
- (NSView *)hitTest:(CGPoint)point
{
if ([self isHidden])
{
return nil;
}
NSPoint p = [self.layer convertPoint: point fromLayer: [self superview].layer];
for (NSView *subView in [[self subviews] reverseObjectEnumerator]) {
if (![subView isHidden]) {
NSView *v = [subView hitTest:p];
if (v) {
return v;
}
}
}
if ([self mouse:point inRect:self.layer.frame]) {
return self;
}
return nil;
}
There's definitely a bug in #228 that I'll be looking into sometime soon.
Just pushed some patches to #228. Lemme know if it works for you.