gpt4 book ai didi

iphone - 触摸位置、框架。 CGRectContainsPoint 不返回 true

转载 作者:行者123 更新时间:2023-11-29 04:07:49 25 4
gpt4 key购买 nike

我有多个 UIImageView 子类:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

for (UITouch *touch in touches) {

CGPoint _location = [touch locationInView:touch.view];
[self processTouch:_location];
}


}





-(void)processTouch:(CGPoint)location {



DLog(@"location: %f .. bounds: %f : %f" ,location.x, [twoThirdOfTheWayCoordinateX floatValue], [oneThirdOfTheWayCoordinateX floatValue]);



if(CGRectContainsPoint(self.frame, location)) {

DLog(@"1");

if(location.x > [twoThirdOfTheWayCoordinateX floatValue]){

[self oneStar];

} else if (location.x < [oneThirdOfTheWayCoordinateX floatValue]) {

[self zeroStars];

} else if( [twoThirdOfTheWayCoordinateX floatValue] >= location.x && location.x >= [oneThirdOfTheWayCoordinateX floatValue]){

[self halfStars];

}

}

}

DLog(@"1");永远不会被叫到。 UIImageView 子类位于 iPhone 屏幕的中间。当它位于左上角时,此代码有效。

NSLog: -[Star processTouch:] 位置:44.000000 .. 边界:33.333332 : 16.666666

我认为问题是因为:

if(CGRectContainsPoint(self.frame, location)) {

永远不会被叫到。

为什么会这样呢?第一个 DLog 被调用。

我用来初始化实例的代码:

self.instance = [[Class alloc] initWithFrame:CGRectMake(10, 10, 50 , 50)];
self.instance.userInteractionEnabled = YES;
self.instance.image = [UIImage imageNamed:@"0-0.png"];
[self.view addSubview: self.instance];
[self.instance setNeedsDisplay];

最佳答案

用 self.bounds 替换 self.frame 解决了这个问题。

向 freenode 上的 #iphonedev 致敬。

关于iphone - 触摸位置、框架。 CGRectContainsPoint 不返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14916578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com