- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如果我有一个 UIImageView 并且想知道用户是否点击了图像。在 touchesBegan 中,我执行以下操作但总是以第一个条件结束。窗口处于纵向模式,图像位于底部。我可以点击窗口的右上角,仍然进入第一种情况,这似乎很不正确。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:touch.view];
if(CGRectContainsPoint(myimage.frame, location) == 0){
//always end up here
}
else
{ //user didn't tap inside image}
值是:
location: x=303,y=102
frame: origin=(x=210,y=394) size=(width=90, height=15)
有什么建议吗?
最佳答案
首先,您要接触:
UITouch *touch = [[event allTouches] anyObject];
接下来,您要检查相对于 ImageView 的 locationInView。
CGPoint location = [touch locationInView:self]; // or possibly myimage instead of self.
接下来,CGRectContainsPoint 返回一个 bool 值,因此将它与 0 进行比较是非常奇怪的。应该是:
if ( CGRectContainsPoint( myimage.frame, location ) ) {
// inside
} else {
// outside
}
但是,如果 self 不是 myimage,那么 myimage View 可能会代替您进行触摸 - 从您的问题中不清楚 self 是什么对象,它不是所讨论的 UIImageView 的子类。
关于objective-c - 点不在 Rect 但 CGRectContainsPoint 说是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/979620/
我有 Rect 和 origin。我会检查我的原点是否正确。 我的矩形是: aRect = (origin = (x = 0, y = 44), size = (width = 768, height
我想我并不完全理解 containsPoint 方法: // test CGRect compareRect = CGRectMake(-39, -62, 39, 62); CGPoint compa
我正在制作一个简单的拖放项目。当我使用 CGRectContainsPoint 将 View 拖放到不同的 View 时,它会起作用。但是这两个 View 应该在同一个 View 中。现在假设我有一个
在 viewDidLoad 中,我正在制作一个名为 DeepFryingBasket 的 imageView。您可以用手指左右移动篮子,但不能上下移动。我的第二张图片是一条从屏幕上掉下来的炸薯条。如果
使用这段代码,我试图检测用户用手指移动的 UIbutton 何时在另一个 UIButton(或 UIImageView)上释放: CGPoint dropPoint = [gesture locati
我有多个 UIImageView 子类: -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { for (UITo
我有一个 UIView,用户可以点击 UIView 来“选择”或突出显示它所代表的应用内“事物”。我使用 CGRectContainsPoint(thing.frame,tapPoint) 来实现这一
如果我有一个 UIImageView 并且想知道用户是否点击了图像。在 touchesBegan 中,我执行以下操作但总是以第一个条件结束。窗口处于纵向模式,图像位于底部。我可以点击窗口的右上角,仍然
我是一名优秀的程序员,十分优秀!