ios – 接收外界的触摸事件

ios – 接收外界的触摸事件,第1张

概述以前有类似的问题,我已经提到 Capturing touches on a subview outside the frame of its superview using hitTest:withEvent:和 Delivering touch events to a view outside the bounds of its parent view.但他们似乎没有回答我的特殊问题. 我有一个 以前有类似的问题,我已经提到 Capturing touches on a subview outside the frame of its superview using hitTest:withEvent:和 Delivering touch events to a view outside the bounds of its parent view.但他们似乎没有回答我的特殊问题.

我有一个具有以下结构的自定义控件:

+-------------------------------+|           UIbutton            |+-------------------------------+|                          ||                          ||        UItableVIEw       ||                          ||                          |+------------------------- +

自定义控件覆盖UIbutton子类,并将UItableVIEw作为其子视图添加.这个想法是让整个控制像一个下拉菜单.当UIbutton被按下时,UItableVIEw将会下拉并选择一个选项.

如果控件是最上面的UIVIEw的直接孩子,这一切都适用于在UIbutton中重击的hitTest,如Apple的上述Q&A A链接所述.但是,如果控件位于另一个视图层次结构中,则UItableVIEw不会接收触摸事件.

以下是使用的hitTest代码:

overrIDe func hitTest(point: CGPoint,withEvent event: UIEvent?) -> UIVIEw? {    // Convert the point to the target vIEw's coordinate system.    // The target vIEw isn't necessarily the immediate subvIEw    let pointForTargetVIEw = self.spinnertableVIEw.convertPoint(point,fromVIEw:self)     if (CGRectContainsPoint(self.spinnertableVIEw.bounds,pointForTargetVIEw)) {        // The target vIEw may have its vIEw hIErarchy,// so call its hitTest method to return the right hit-test vIEw        return self.spinnertableVIEw.hitTest(pointForTargetVIEw,withEvent:event);    }    return super.hitTest(point,withEvent: event)}

编辑:

对于没有能够查看答案并检查是否解决问题,由于需要立即关注的其他一些任务,我们深表歉意.我会检查一下,接受一个帮助.谢谢你的耐心.

解决方法 正如你所说:

However,if the control is in another vIEw hIErarchy,the UItableVIEw
is not receiving touch events.

即使你使它工作,如果你已经在另一个UIVIEw?

这样我们有一个为视图层次结构转换点的负担,我的建议是,如您在this control中可以看到的,它将表视图添加到控件本身存在的同一层次结构中. (例如,它在添加了该控件的控制器上添加表视图)

链接的一部分:

-(voID)textFIEldDIDBeginEditing:(UITextFIEld *)textFIEld{    [self setupSuggestionList];    [suggestionListVIEw setHIDden:NO];    // Add List to the super vIEw.    if(self.dataSourceDelegate && [self.dataSourceDelegate isKindOfClass:UIVIEwController.class])    {        [((UIVIEwController *)self.dataSourceDelegate).vIEw addSubvIEw:suggestionListVIEw];    }    // Setup List as per the given direction    [self adjustListFrameForDirection:dropDownDirection];}

希望有帮助!

总结

以上是内存溢出为你收集整理的ios – 接收外界的触摸事件全部内容,希望文章能够帮你解决ios – 接收外界的触摸事件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1112800.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存