首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将触摸事件从页面视图控制器传递到容器控制器?

触摸事件从页面视图控制器传递到容器控制器可以通过以下步骤实现:

  1. 确保页面视图控制器和容器控制器之间建立了正确的父子关系。在页面视图控制器中,将其添加为容器控制器的子视图控制器。
  2. 在页面视图控制器中,重写touchesBegan(_:with:)touchesMoved(_:with:)touchesEnded(_:with:)等触摸事件处理方法。
  3. 在这些触摸事件处理方法中,调用父视图控制器(即容器控制器)的相应触摸事件处理方法,将触摸事件传递给容器控制器。

以下是一个示例代码:

代码语言:txt
复制
// 在页面视图控制器中重写触摸事件处理方法
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    super.touchesBegan(touches, with: event)
    
    // 将触摸事件传递给容器控制器
    if let containerViewController = parent as? ContainerViewController {
        containerViewController.touchesBegan(touches, with: event)
    }
}

// 在容器控制器中实现相应触摸事件处理方法
func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    // 处理触摸事件
    // ...
}

通过以上步骤,触摸事件就可以从页面视图控制器传递到容器控制器中进行处理。

对于这个问题,腾讯云没有直接相关的产品或者产品介绍链接地址。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET MVC 5 - 将数据控制器传递视图

在我们讨论数据库和数据模型之前,让我们先讨论一下如何将数据控制器传递视图控制器类将响应请求来的URL。...相比只返回一个字符串,让我们来改变控制器,来使用视图模板吧。视图模板将生成动态的HTML,这意味着您需要通过适当的方式把数据控制器传递视图,从而才能生成动态的HTML。...name=Scott&numtimes=4 现在,模型绑定(model binder) 使得数据URL传递控制器控制器将数据装入ViewBag对象中,通过该对象传递视图。...然后视图为用户生成显示所需的HTML。 ? 在上面的示例中,我们使用了ViewBag对象把数据控制器传递给了视图。在本系列教程后面的文章中,我们将使用视图模型来将数据从一个控制器传递视图中。...学习了本节内容,才能更好的理解数据是如何控制器传递视图显示的。在掌握这些MVC知识的同时,也可以借助一些开发工具来帮助开发过程。

5K100

iOS中的事件的产生和传递

2.事件传递触摸事件传递是从父控件传递子控件 ●也就是UIApplication->window->寻找处理事件最合适的view 注 意: 如果父控件不能接受触摸事件,那么子控件就不可能接收到触摸事件...3.判断keyWindow是否能接受触摸事件 4.判断触摸点是否在自己身上 5.子控件数组中后往前遍历子控件,重复前面的两个步骤 6.View,比如testView,那么会把这个事件交给这个testView...image.png 1.如果当前view是控制器的view,那么控制器就是上一个响应者,事件传递控制器;如果当前view不是控制器的view,那么父视图就是当前view的上一个响应者,事件传递给它的父视图...;如果上级视图仍然无法处理则会继续往上传递;一直传递视图控制器view controller,首先判断视图控制器的根视图view是否能处理此事件;如果不能则接着判断该视图控制器能否处理此事件,如果还是不能则继续向上传...(父控件子控件),事件的响应是从下到上(顺着响应者链条向上传递:子控件父控件。

89610

iOS面试题:事件传递和响应机制

事件的产生 发生触摸事件后,系统会将该事件加入一个由UIApplication管理的事件队列中,为什么是队列而不是栈?...事件传递 触摸事件传递是从父控件传递子控件 也就是UIApplication->window->寻找处理事件最合适的view 注 意: 如果父控件不能接受触摸事件,那么子控件就不可能接收到触摸事件...1.首先判断主窗口(keyWindow)自己是否能接受触摸事件 2.判断触摸点是否在自己身上 3.子控件数组中后往前遍历子控件,重复前面的两个步骤(所谓后往前遍历子控件,就是首先查找子控件数组中最后一个元素...view是控制器的view,那么控制器就是上一个响应者,事件传递控制器;如果当前view不是控制器的view,那么父视图就是当前view的上一个响应者,事件传递给它的父视图 2 在视图层次结构的最顶级视图...: 事件传递是从上到下(父控件子控件),事件的响应是从下到上(顺着响应者链条向上传递:子控件父控件。

1.2K10

iOS 小技能: Responder Chain(响应者链)【下篇】

发生触摸事件后,系统会将该事件加入一个由UIApplication管理的事件队列中 UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常,先发送事件给应用程序的主窗口...(keyWindow) 主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件,但是这仅仅是整个事件处理过程的第一步 找到合适的视图控件后,就会调用视图控件的touches方法来作具体的事件处理 touchesBegan...II 响应者链的事件传递过程 1).如果view的控制器存在,就传递控制器;如果控制器不存在,则将其传递给它的父视图 2).在视图层次结构的最顶级视图,如果也不能处理收到的事件或消息,则其将事件或消息传递给...2.1 触摸事件处理的详细过程 用户点击屏幕后产生的一个触摸事件,经过一系列的传递过程后,会找到最合适的视图控件来处理这个事件 找到最合适的视图控件后,就会调用控件的touches方法来作具体的事件处理...如果当前这个view不是控制器的view,那么父控件就是上一个响应者。 2.2 事件传递的完整过程 先将事件对象由上往下传递(由父控件传递给子控件),找到最合适的控件来处理这个事件

89730

史上最详细的iOS之事件传递和响应机制-原理篇

3.2.事件传递 触摸事件传递是从父控件传递子控件 也就是UIApplication->window->寻找处理事件最合适的view 注 意: 如果父控件不能接受触摸事件,那么子控件就不可能接收到触摸事件...如果当前view是控制器的view,那么控制器就是上一个响应者,事件传递控制器;如果当前view不是控制器的view,那么父视图就是当前view的上一个响应者,事件传递给它的父视图 2>在视图层次结构的最顶级视图...首先看initial view能否处理这个事件,如果不能则会将事件传递给其上级视图(inital view的superView);如果上级视图仍然无法处理则会继续往上传递;一直传递视图控制器view...controller,首先判断视图控制器的根视图view是否能处理此事件;如果不能则接着判断该视图控制器能否处理此事件,如果还是不能则继续向上传 递;(对于第二个图视图控制器本身还在另一个视图控制器中,...(父控件子控件),事件的响应是从下到上(顺着响应者链条向上传递:子控件父控件。

10.7K70

iOS-控件响应用户控制事件事件处理

; 事件的产生和传递 发生触摸事件后,系统会将该事件加入一个由UIApplication管理的事件队列中。...2.UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常,先发送事件给应用程序的主窗口(keyWindow) 3.主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件...,这也是整个事件处理过程的第一步 4.找到合适的视图控件后,就会调用视图控件的touches方法来作具体的事件处理 touchesBegan… touchesMoved… touchedEnded… 如果父控件不能接收触摸事件...;就会将事件顺着响应者链条往上传递传递给上一个响应者 4> 接着就会调用上一个响应者的touches….方法 如何判断上一个响应者 1> 如果当前这个view是控制器的view,那么控制器就是上一个响应者...2> 如果当前这个view不是控制器的view,那么父控件就是上一个响应者 响应者链的事件传递过程 如果view的控制器存在,就传递控制器;如果控制器不存在,则将其传递给它的父视图视图层次结构的最顶级视图

95570

【IOS开发基础系列】UIView专题

当发生屏幕旋转事件的时候,UIapplication对象会将旋转事件传递给uiwindow,uiwindow又会将旋转事件传递给它的根控制器,由根控制器决定是否需要旋转UIapplication->uiwindow...如果这个点位于接收者之外就返回nil 讨论         这个方法贯穿视图的层次发送pointInside:withEvent:消息每一个子视图用来决定那个子视图需要接收触摸事件。...举个例子,文件从一个视图另一个视图,然後使用一个UIView子类的容器视图,如下: 1.Begin an animation block. 2.Set the transition on the container...2.在容器视图中设置转换。 3.在容器视图中移除子视图。 4.在容器视图中添加子视图。 5.结束动画块。...:方法寻找此次Touch操作初始点所在的视图(View),即需要将触摸事件传递给其处理的视图,称之为hit-test view。

47930

事件传递、响应者链条

UIApplication从事件队列中取出最新的触摸事件进行分发传递UIWindow进行处理。...UIApplication和UIWindow通过sendEvent:方法传递事件 UIWindow 之后会通过hitTest:withEvent:方法寻找触碰点所在的视图 hitTest:withEvent...:原理 // point是该视图的坐标系上的点 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { // 1.判断自己能否接收触摸事件...(即调用super的touches方法),之前往下走的路线往上回传,在其中加入了Viewtroller来处理 如果view的控制器存在,就传递控制器;如果控制器不存在,则将其传递给它的父View...在视图层次结构的最顶级视图传递给ViewController ViewController将事件传递给window对象进行处理 window对象继续将事件或消息传递给UIApplication

85410

iOS-UITouch事件处理详解1. iOS中的事件基本介绍2.UITouch3.UIEvent4. 事件的产生和传递5. 通过UITouch方法监听View的触摸事件的缺点

事件的产生和传递 4.1 事件产生和传递过程 发生触摸事件后,系统会将该事件加入一个由UIApplication管理的事件队列中 UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理...找到最合适的控件图示 触摸事件传递从父控件传递子控件 点击了绿色的view: UIApplication -> UIWindow -> 白色 ->橙色(发现触摸点不在自己身上,判断自己不是) -...4.4 触摸事件处理的详细过程(响应者链的传递过程) 用户点击屏幕后产生的一个触摸事件,经过一系列的传递过程后,会找到最合适的视图控件来处理这个事件 找到最合适的视图控件后,就会调用控件的touches...方法来作具体的事件处理 这些touches方法的默认做法是将事件顺着响应者链条向上传递,将事件交给上一个响应者进行处理 判断上一个响应者,如果view的控制器存在,控制器就为上一个响应者,传递控制器;...如果控制器不存在,其父视图为上一个响应者,将其传递给它的父视图视图层次结构的最顶级视图,如果也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理 如果window对象也不处理,

1.6K60

iOS面试题-UI篇

这样的话性能的角度来说,对CPU和内存来说都是欠佳的。...-(void)viewDidLayoutSubviews; 触摸事件传递 触摸事件传递是从父控件传递子控件 如果父控件不能接收触摸事件,那么子控件就不可能接收到触摸事件 不能接受触摸事件的四种情况...如何找到最合适处理事件的控件: 首先,判断自己能否接收触摸事件 可以通过重写hitTest:withEvent:方法验证 其次,判断触摸点是否在自己身上 对应方法pointInside:withEvent...: 后往前(先遍历最后添加的子控件)遍历子控件,重复前面的两个步骤 如果没有符合条件的子控件,那么就自己处理 事件响应者链 如果当前view是控制器的view,那么就传递控制器 如果控制器不存在,则将其传递给它的父控件...在视图层次结构的最顶层视图也不能处理接收到的事件或消息,则将事件或消息传递给UIWindow对象进行处理 如果UIWindow对象也不处理,则将事件或消息传递给UIApplication对象 如果UIApplication

1.9K21

iOS开发--事件传递,响应者链条及常见面试题

对象首先会使用hitTest:withEvent:方法寻找此次Touch操作初始点所在的视图(View),即需要将触摸事件传递给其处理的视图(最合适来处理的控件),这个过程称之为hit-test view...1.自己能响应触摸事件 2.触摸点在自己身上 3.后往前递归遍历子控件, 重复上两步 4.如果没有符合条件的子控件, 那么就自己最合适处理 3.两个重要的响应方法(UIView的) 1.hit-test...事件传递是从上自下传递,响应是从下到上,所谓的上就是父视图而已,也就是离窗口最近的. 2.穿透控件: 2.1 如果我们不想让某个视图响应事件,只需要重载 PointInside:withEvent:方法...如果view的控制器存在,就传递控制器;如果控制器不存在,则将其传递给它的父视图 2\....在视图层次结构的最顶级视图,如果也不能处理收到的事件或消息,则其将事件传递给window对象进行处理 3\.

76631

iOS 中的事件响应

UIView:若视图控制器的根视图,则其 nextResponder 为控制器对象;否则,其 nextResponder 为父视图; UIViewController:若控制器视图是 window...的根视图,则其 nextResponder 为窗口对象;若控制器别的控制器 present 出来的,则其 nextResponder 为 presenting view controller; UIWindow...系统通过hitTest方法沿视图层级树底向上(视图开始),后向前(逻辑上更靠近屏幕的视图开始)进行遍历,最终返回一个适合响应触摸事件的 View,并在过程中为 UITouch 记录了 view...传递 UIScrollView 后,其会先将该事件拦截而不会立即传递给对应的子视图, 同时开始一个 150ms 的倒计时,并监听用户接下来的行为。...:inContentView:方法询问是否将事件传递给对应的子视图 (如果返回 NO, 则该事件不会传递给对应的子视图,如果返回 YES,则该事件传递给对应的子视图,默认为 YES); 当事件传递给子视图

2.6K11

【IOS开发基础系列】UIScrollView专题

当手指触摸后,scroll view会暂时拦截触摸事件,使用一个计时器。...假如定时器行动时,没有任何的大的位置改变,滚动视图就发送一个跟踪事件触摸的子视图。如果在定时器消失前,用户拖动他们的手指足够的远,滚动视图取消子视图的任何跟踪事件,滚动它自己。...当手指触摸后, scroll view会暂时拦截触摸事件,使用一个计时器。...,是用来在视图上画数字的,这样就可以看到视图重用的效果了,应该是0开始无穷多,但是实际上内存中就创建了6个视图。...你的代码变得很牢固地配对在一起,它实际上变成了超类的一部分,你无法UIScrollView中析取它,之后用其它东西代替,如果它在你控制器中且为控制器的一部分,在之后更容易改变它工作的方式和重新安排你应用程序的一些部分

40830

京东七鲜一面总结

事件响应链 事件响应链(同一个控制器有三个view,如何判断是否拥有相同的父视图) iOS 系统检测到手指触摸( Touch )操作时会将其打包成一个 UIEvent 对象,并放入当前活动 Application...的事件队列,单例的 UIApplication 会从事件队列中取出触摸事件传递给单例的 UIWindow 来处理,UIWindow 对象首先会使用 hitTest:withEvent: 方法寻找此次...Touch 操作初始点所在的视图(View),即需要将触摸事件传递给其处理的视图,这个过程称之为 hit-test view。...UIAppliction --> UIWiondw -->递归找到最适合处理事件的控件-->控件调用 touches 方法-->判断是否实现 touches 方法-->没有实现默认会将事件传递给上一个响应者...nextResponder 指向父视图如果是控制器视图则指向控制器控制器如果在导航控制器中则指向导航控制器的相关显示视图最后指向导航控制器; 如果是根控制器则指向 UIWindow; UIWindow

37720

UI篇-UIResponder之事件传递和响应精析

iOS中的几种常见事件 ? 这篇文章只讨论触摸事件。...——>redview对象 //************华丽分割线 便于阅读*********** 事件传递其实就是在事件产生与分发之后如何寻找最优响应视图的一个过程。...3.类似地,视图层次中的每个后续视图如果不处理事件都首先传递给它的视图控制器(如果有的话),然后是它的父视图。 4.最上层的容器视图事件传递给UIWindow对象。...前一个方法使应用程序完全停止接收触摸事件消息,第二个方法则重启消息的接收。某些时候,当您的代码正在执行动画时,可能希望关闭事件传递。...巧妙利用nextResponder获得当前页面的控制容器 @implementation UIView (ParentController) -(UIViewController*)parentController

2.4K30

四类事件的主要方法2. 响应者链3. 手势识别功能(Gesture Recognizer)4. 手势的使用

1.1 触摸事件 触摸事件分成了四部分:开始、移动、结束、取消。...大概过程就是这样: button尝试处理事件。如果它不能处理事件,则将事件传递给其父视图。 button的父视图(superview)尝试处理事件。...如果这个父视图还不能处理事件,则继续将视图继续往上级传。 上层视图(topmost view)会尝试处理事件。如果这个上层视图还是不能处理事件,则将事件传递视图所在的视图控制器。...视图控制器会尝试处理事件。如果这个视图控制器不能处理事件,则将事件传递给窗口(window)对象。 窗口(window)对象尝试处理事件。如果不能处理,则将事件传递给UIApplication。...一次完整的触摸事件传递响应的过程大概是这样的: UIAppliction --> UIWindow -->递归找到最适合处理事件的控件-->控件调用touches方法-->判断是否实现touches方法

2.1K40

UIViewController生命周期

一、视图控制器 UIViewController采用懒加载的方式,也就是说第一次访问到view属性时才会加载或创建它。...由于视图视图控制器管理,所以讨论视图的加载方式时,主要讨论视图控制器的加载方式。 通过Storyboard加载:这是苹果推荐的方式。...此时整个视图层次(view hierarchy)已经被放到内存中。 无论是nib文件加载,还是通过纯代码编写界面,viewDidLoad方法都会执行。...Inactive未激活:程序在前台运行,不过没有接收到事件。在没有事件处理情况下程序通常停留在这个状态。 Active激活:程序在前台运行而且接收到了事件。这也是前台的一个正常的模式。...2、UIWindow的主要作用有: 1.作为UIView的最顶层容器,包含应用显示所有的UIView; 2.传递触摸消息和键盘事件给UIView; 把view添加到uiwindow 3、把view

1.8K10

Flutter技术与实战(4)

Flutter 通过引入 Widget、Element 与 RenderObject 这三个概念,把原本视图数据视图渲染的复杂构建过程拆分得更简单、直接,在易于集中治理的同时,保证了较高的渲染效率。...用户交互事件如何响应 手势操作在 Flutter 中分为两类: 第一类是原始的指针事件(Pointer Event),即原生开发中常见的触摸事件,表示屏幕上触摸(或鼠标、手写笔)行为触发的位移行为;...在手指接触屏幕,触摸事件发起时,Flutter 会确定手指与屏幕发生接触的位置上究竟有哪些组件,并将触摸事件交给最内层的组件去响应。...不过 Flutter 无法像浏览器冒泡那样取消或者停止事件进一步分发,我们只能通过 hitTestBehavior 去调整组件在命中测试期内应该如何表现,比如把触摸事件交给子组件,或者交给其视图层级之下的组件去响应...而这也是合乎常理的:视觉效果上看,子视图视图层级位于父视图之上,相当于对其进行了遮挡,因此从事件处理上看,子视图自然是事件响应的第一责任人。

10.7K20
领券