我对该视图的触摸有疑问:
我有一个parentView(帧是(0,0,768,1024)),它包含两个子视图(A和B),一个带有标签100的帧(0,0,512,768)和带有标签200的B帧(512,0,512,768)。
我实施了触摸方法touchesBegan:withEvent:
touchesMoved:withEvent:
touchesEnded:withEvent:
。
当我开始从A到B的触摸touchesBegan
和touchesMoved
方法会按预期触发
我需要实现:当触摸从A到达B时,触摸的A应该被触发并且触发B开始被触发,反之亦然。我在各自的方法中有自己的逻辑。有人可以建议如何实现同样的目标。
答案 0 :(得分:1)
这是故意行为。通常情况下,如果您触摸取消按钮,当您抬起手指时,手指会滑到删除按钮上,您不希望意外删除某些内容。
然而,我遇到过这样的情况,我确实想要接触这样的传递。与@ejazz非常相似,我将工作移至包含A和B的视图。这启用了用户交互,并实施了touchesBegan
,touchesMoved
和touchesEnded
。
当触摸移动到子视图上时,它会发送相应的消息。我只是打开和关闭了子视图,但如果需要,您应该可以在相应的子视图上调用touchesBegan
,touchesMoved
和touchesEnded
。如果您需要知道触摸的开始和结束时间,则需要跟踪与每次触摸相关联的上一个视图 - 或者只需调用其previousLocationInView:
方法。
答案 1 :(得分:0)
我建议使用UIPanGestureRecognizer
类。将其附加到父视图,设置委托。
您现在可以关注州和地点。因此,当状态为UIGestureRecognizerStateBegan
时,检查位置是在A还是B中,当状态为UIGestureRecognizerStateEnded
时,检查位置是在B还是A中。
您可以使用
检查点按视图是否包含A或B视图CGRectContainsRect(<#CGRect rect1#>, <#CGRect rect2#>)
然后使用view.frame