gpt4 book ai didi

android - iOS使gestureRecognizer在 View 之外监听

转载 作者:行者123 更新时间:2023-11-29 02:05:55 24 4
gpt4 key购买 nike

嘿,我正在使用此代码来模仿我的应用程序中的旋钮 View :

- (void) setupGestureRecognizer
{
CGPoint midPoint = CGPointMake(image.frame.origin.x + image.frame.size.width / 2,
image.frame.origin.y + image.frame.size.height / 2);
CGFloat outRadius = image.frame.size.width / 2;
gestureRecognizer = [[OneFingerRotationGestureRecognizer alloc] initWithMidPoint: midPoint
innerRadius: outRadius / 10
outerRadius: outRadius *2
target: self];
[self.view addGestureRecognizer: gestureRecognizer];
}

像这样,gestureRecognizer 会处理按钮非常接近发生的所有事件。我想要的是以下内容:

  • gestureRecognizer 仅在用户触摸内部时触发图像
  • 如果手指离开图像,gestureRecognizer 应继续
    聆听(并计算角度)

在 Android 上,我的做法如下:

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
float x = e2.getX() / ((float) getWidth());
float y = e2.getY() / ((float) getHeight());
float rotDegrees = cartesianToPolar(1 - x, 1 - y);

[...doing maths stuff here]

我已经让所有旋转的东西都工作了,但是如何让gestureRecognizer像处理Android中的事件一样工作?如果我失去了我的互联网连接并且别无选择,只能完全自己编码,我只会采用 2 个不同的 gestureRecognizers,处理“init”按下和一个“跟随”手指无处不在,根据键设置相应的旋钮在第一个gestureRecognizer中设置的值。但对我来说,这看起来像是一大堆糟糕的代码,所以我很感激对此的一些建议。

干杯,亚历克斯

最佳答案

您应该能够使用委托(delegate)方法 gestureRecognizer:shouldReceiveTouch: 来检查触摸的位置,并且仅当触摸点位于 ImageView 的边界内时才返回 YES(使用 CGRectContainsPoint).如果手势识别器被添加到 ImageView 的 super View ,它应该继续像你想要的那样“倾听”。

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
CGPoint touchPoint = [touch locationInView:self.view];
return CGRectContainsPoint(self.imageView.frame, touchPoint);
}

还要确保将 Controller 设置为手势识别器的代理。

关于android - iOS使gestureRecognizer在 View 之外监听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29801457/

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