ios – touchesBegan,touchesEnded,touchesMoved移动UIView
发布时间:2020-12-15 02:02:32 所属栏目:百科 来源:网络整理
导读:我需要拖动我的UIView对象。我使用这个代码,但它不工作 float oldX,oldY;BOOL dragging;- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [[event allTouches] anyObject]; CGPoint touchLocation = [touch locationI
我需要拖动我的UIView对象。我使用这个代码,但它不工作
float oldX,oldY; BOOL dragging; - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [[event allTouches] anyObject]; CGPoint touchLocation = [touch locationInView:self]; if ([[touch.view class] isSubclassOfClass:[UILabel class]]) { UILabel *label = (UILabel *)touch.view; if (CGRectContainsPoint(label.frame,touchLocation)) { dragging = YES; oldX = touchLocation.x; oldY = touchLocation.y; } } } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { dragging = NO; } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [[event allTouches] anyObject]; CGPoint touchLocation = [touch locationInView:self]; if ([[touch.view class] isSubclassOfClass:[UILabel class]]) { UILabel *label = (UILabel *)touch.view; if (dragging) { CGRect frame = label.frame; frame.origin.x = label.frame.origin.x + touchLocation.x - oldX; frame.origin.y = label.frame.origin.y + touchLocation.y - oldY; label.frame = frame; } } } 解决方法
你的代码有一些奇怪的东西。
你要求自己的位置,一些UIView可能包含你想要检查的UILabel。这就是为什么你不会把touchesXXX添加到你的UILabel子类的一个问题。 这取消了,因为您使用的是label.frame,它是根据其superview.bounds(您的父级UIView您询问的触摸位置)定义的,但这并不意味着最直接的方式来遵循什么继续 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |