gpt4 book ai didi

ios - touchesMoved 处理第一次触摸事件 iOS

转载 作者:行者123 更新时间:2023-12-01 17:33:56 33 4
gpt4 key购买 nike

我正在使用这种方法在 View 中移动我的对象:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

在这个方法中,我接下来写了:
NSLog(@"event: %@", event);

并得到这个结果:
event: <UITouchesEvent: 0x310d00> timestamp: 5277.16 touches: {(
<UITouch: 0x3f1110> phase: Moved tap count: 1 window: <UIWindow: 0x3117d0; frame = (0 0; 768 1024); layer = <UIWindowLayer: 0x30cb20>> view: <UIView: 0x330520; frame = (0 0; 768 1024); transform = [0, -1, 1, 0, 0, 0]; autoresize = W+H; layer = <CALayer: 0x330550>> location in window: {279, 677} previous location in window: {305, 694} location in view: {347, 279} previous location in view: {330, 305},
<UITouch: 0x4a1a710> phase: Stationary tap count: 1 window: <UIWindow: 0x3117d0; frame = (0 0; 768 1024); layer = <UIWindowLayer: 0x30cb20>> view: (null) location in window: {412, 89} previous location in window: {413, 89} location in view: {412, 89} previous location in view: {413, 89}
)}

在这个日志中,我可以看到我所有的触摸(现在这是两次触摸)。

我的问题是如何取得联系?

这需要移动我的对象。

现在我正在使用这个:
UITouch *touch = [[event allTouches] anyObject];
CGPoint touchLocation = [touch locationInView:self.view];

但是当我移动我的对象时,我会得到所有的触摸值。如何处理第一次触摸?

非常感谢!

最佳答案

你这样做的方式没有错,但如果你真的想知道如何获得第一个对象,就在这里。

参数touches是NSSet类型。如果你看看NSSet Class Reference也可以找方法 - (NSArray *)allObjects .

因此,您可以通过以下方式检索第一次触摸:

UITouch *touch = (UITouch *)[[[event allTouches] allObjects] objectAtIndex: 0];

也看看 UIEvent Class Reference .在那里你会发现 allTouches 不是唯一的方法。类也知道如何返回:
- (NSSet *)touchesForGestureRecognizer:(UIGestureRecognizer *)gesture

- (NSSet *)touchesForView:(UIView *)view

- (NSSet *)touchesForWindow:(UIWindow *)window

所有这些方法都返回 NSSet .您可以将其转换为 NSArray使用 NSSetallObjects方法。

关于ios - touchesMoved 处理第一次触摸事件 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10755743/

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