我添加了一个 UIView,它依赖 TouchesMoved: 事件来拖动触摸。同一个 View Controller 中已经存在长按、点击、旋转和捏合手势识别器。我遇到了一个问题,即 View 接收到 touchesBegan: 和 touchesEnded: 事件,但没有移动任何触摸。
我的 touchesMoved 未被调用的问题是否是由手势识别器取消 View 内的触摸引起的?我还涉及到 ScrollView 。这会是罪魁祸首吗?
如果我将无法使用 touchesMoved,这是实现“触摸和移动”功能的最接近手势。它是点击还是平移手势识别器?
感谢您的帮助!
最佳答案
默认情况下,手势会取消在它们处于事件状态时链接到的对象中的触摸。您可以通过设置 cancelsTouchesInView 来停止此行为属性设置为 NO。
关于iPhone UIView touchesMoved : withEvent: does not get called on UIView with gesture recognizers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10326097/
我正在努力变得像熟悉VB.NET(我工作场所使用的语言)一样熟悉C#。学习过程中最好的事情之一是,通过学习另一种语言,您往往会更多地了解您的主要语言——像这样的小问题会弹出:根据我发现的来源和过去的经验,VB.NET中声明为WithEvents的字段能够引发事件。我知道C#没有直接等效项——但我的问题是:VB.NET中没有this关键字的字段不能引发事件,有没有办法在C#中创建同样的行为?VB编译器是否简单地阻止这些对象处理它们的事件(同时实际上允许它们像往常一样引发事件)?我只是好奇;我对这个问题没有任何特定的应用...... 最佳答案
我在我的View中识别触摸-如果某些情况发生我想用这个方法调用我的subview但它不起作用-(如果我不覆盖hittestWithEvent-这个View将被返回)我该怎么做?编辑:我想让原来的SUBVIEW得到“点击”,所以我尝试这样做:-(void)didTap:(MyTapGesture*)tap{//theoriginalviewthatwouldhavebeenreturnedbyhittest.couldbeanyarbitraryviewUIView*theView=[superhitTest:[taplocationInView:self]withEvent:nil];
长话短说,如果我的UINavigationBar的alpha设置为0,我希望所有触摸都转到底层View(从带有导航栏的ViewController的角度来看,它只是是self.view)。如果是1.0,我希望它保留它们。我将UINavigationBar子类化,并试图覆盖hitTest:withEvent:,但我真的很困惑我在做什么,而且搜索也没什么帮助。我如何告诉它“如果alpha为0,将触摸发送到self.view,否则继续导航栏”? 最佳答案 您需要将View的引用发送到导航栏,将其设置为名为behindView或其他名称的属
我有一个自定义窗口(应该在所有内容之上,包括键盘)来显示覆盖物,类似于您在设备中按音量增大/减小按钮时看到的覆盖物。所以我制作了一个自定义窗口OverlayWindow到目前为止一切正常,后面的窗口正常接收它们的事件。然而hitTest:withEvent:被多次调用,有时甚至返回nil。我想知道这是否正常/正确?如果不是,我该如何解决?//Asmall(WIDTH_MAX:100)windowinthecenterofthescreen.IfitmattersconstCGSizescreenSize=[[UIScreenmainScreen]bounds].size;constCG
我添加了一个UIView,它依赖TouchesMoved:事件来拖动触摸。同一个ViewController中已经存在长按、点击、旋转和捏合手势识别器。我遇到了一个问题,即View接收到touchesBegan:和touchesEnded:事件,但没有移动任何触摸。我的touchesMoved未被调用的问题是否是由手势识别器取消View内的触摸引起的?我还涉及到ScrollView。这会是罪魁祸首吗?如果我将无法使用touchesMoved,这是实现“触摸和移动”功能的最接近手势。它是点击还是平移手势识别器?感谢您的帮助! 最佳答案
我有一个自定义的UIView实现了hitTest:withEvent:-(UIView*)hitTest:(CGPoint)pointwithEvent:(UIEvent*)event{....somecode....intx=0;x=[[eventallTouches]count];return[superhitTest:pointwithEvent:event];}问题是x总是0。我是否已实现其他API或配置UIView以开始获取触摸?我只需要它来区分触摸开始/移动和结束。 最佳答案 试试这个yourView.userInter
我有一个自定义的UIView实现了hitTest:withEvent:-(UIView*)hitTest:(CGPoint)pointwithEvent:(UIEvent*)event{....somecode....intx=0;x=[[eventallTouches]count];return[superhitTest:pointwithEvent:event];}问题是x总是0。我是否已实现其他API或配置UIView以开始获取触摸?我只需要它来区分触摸开始/移动和结束。 最佳答案 试试这个yourView.userInter
我有一个UIView的子类,我在其中覆盖了hitTest:withEvent:,如下所示:-(UIView*)hitTest:(CGPoint)pointwithEvent:(UIEvent*)event{NSLog(@"Event=%@",event);returnself;}对于View中的每次触摸,我看到了对hitTest:withEvent:的三个调用。这三个电话是在润色之前进行的。输出结果如下:2011-07-0109:20:58.553AppName[930:207]Event=timestamp:4297.16touches:{()}2011-07-0109:20:58.
我有一个UIView的子类,我在其中覆盖了hitTest:withEvent:,如下所示:-(UIView*)hitTest:(CGPoint)pointwithEvent:(UIEvent*)event{NSLog(@"Event=%@",event);returnself;}对于View中的每次触摸,我看到了对hitTest:withEvent:的三个调用。这三个电话是在润色之前进行的。输出结果如下:2011-07-0109:20:58.553AppName[930:207]Event=timestamp:4297.16touches:{()}2011-07-0109:20:58.
我的问题:我有一个superViewEditView基本上占据了整个应用程序框架,还有一个subviewMenuView只占用了底部~20%,然后MenuView包含它自己的subviewButtonView它实际上位于MenuView的边界之外(类似这样:ButtonView.frame.origin.y=-100).(注意:EditView有其他不属于MenuView的View层次结构的subview,但可能会影响答案。)您可能已经知道这个问题:当ButtonView在MenuView的范围内时(或者,更具体地说,当我的触摸在MenuView内时>的边界),ButtonView响应