Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 重新启动uitouch_Iphone_Ios_Cocoa Touch_Uiview_Uitouch - Fatal编程技术网

Iphone 重新启动uitouch

Iphone 重新启动uitouch,iphone,ios,cocoa-touch,uiview,uitouch,Iphone,Ios,Cocoa Touch,Uiview,Uitouch,我试了一上午,开始觉得这是不可能的 所以你在屏幕上触摸一下,它进入了响应链,可能做了些什么。然后你在屏幕上移动它,它被称为touchesMoved:method(与触摸相关联的uiResponder的方法),可能还做了其他事情。 此时,触摸是否会继续在屏幕中移动,当它进入其他uiView时,uiTouch会重新初始化(我的意思是,在第一个uiView中调用touchEnded,然后在新的uiView中调用ToucheSBegind,如果继续移动,则调用touchesMoved) 我已经尝试辞去F

我试了一上午,开始觉得这是不可能的

所以你在屏幕上触摸一下,它进入了响应链,可能做了些什么。然后你在屏幕上移动它,它被称为touchesMoved:method(与触摸相关联的uiResponder的方法),可能还做了其他事情。 此时,触摸是否会继续在屏幕中移动,当它进入其他uiView时,uiTouch会重新初始化(我的意思是,在第一个uiView中调用touchEnded,然后在新的uiView中调用ToucheSBegind,如果继续移动,则调用touchesMoved)

我已经尝试辞去FirstResponder并手动调用这些方法,但我就是做不到。 我一直认为应该有一个非常简单的答案。差不多

UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:self.superview];
if (!CGRectContainsPoint(self.frame, location)) {
    [touch restart];
}


(但文档中的任何内容):

我的建议是让所有要转换的视图的superview接收触摸,然后在TouchsMoved/Start/End方法中的子视图上进行点击测试(可能通过cRectContainsPoint(…),并相应地传递触摸(在子视图上调用相应的touchesBegind/Moved/End方法).

谢谢您的回答,但是如果触摸在view1中开始,并移动到view2,则在view2中调用的方法将被ToucheSMove。有没有快速的方法可以调用一次触摸在view2中开始,在view1中选中的触摸?好的,有了这个解决方案,因为您仍然将方法重定向到子视图,您可以有自己的逻辑。如果我们有view0以viewA和viewB作为子视图,在view0的TouchsMoved方法中,您可以有如下内容…如果上一次触摸在viewA中,而新的触摸事件在viewB中,则发送viewA touchesEnd和viewB ToucheSStart。否则,发送新的触摸事件touchMoved消息。
[[touch phase] restart];