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

Swift - Shake手势关闭子视图控制器

Swift是一种开发iOS、macOS、watchOS和tvOS应用程序的编程语言。它是一种现代、安全、高效的编程语言,由苹果公司于2014年推出。Swift具有易于阅读和编写的语法,同时也具备强大的功能和性能。

Shake手势是一种在iOS应用程序中常用的手势操作,它可以通过用户晃动设备来触发特定的操作。在Swift中,我们可以使用UIResponder类中的motionEnded(_:with:)方法来检测并响应Shake手势。

关闭子视图控制器是指在iOS应用程序中,当我们需要从当前视图控制器返回到上一个视图控制器时,可以通过关闭子视图控制器来实现。在Swift中,我们可以使用以下步骤来关闭子视图控制器:

  1. 在当前视图控制器中,创建一个IBAction方法,用于响应Shake手势的触发。@IBAction func handleShakeGesture(_ sender: Any) { // 在这里编写关闭子视图控制器的代码 }
  2. 在当前视图控制器中,使用以下代码来检测Shake手势的触发,并调用handleShakeGesture方法。override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) { if motion == .motionShake { handleShakeGesture(self) } }
  3. 在handleShakeGesture方法中,使用以下代码来关闭当前的子视图控制器。self.dismiss(animated: true, completion: nil)

通过以上步骤,我们可以在Swift中实现通过Shake手势关闭子视图控制器的功能。

推荐的腾讯云相关产品和产品介绍链接地址:

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

相关·内容

iOS开发常用之网络

LxTabBarController - 改变了原生tabbar切换标签时的生硬效果,并加入滑动切换手势(有和界面上的其它手势发生冲突的风险,可根据具体项目予关闭),swift版本。...ZWSlideViewController - ZWSlideViewController多页滑动视图控制器,可以用最简单的继承方法使用,也可以不用继承,只用菜单或主视图页面,可实现丰富的定制,可以使用在多种不同形态的...hamburger-button.swift - hamburger-button.swift一个汉堡包动画关闭按钮。...STLBGVideo - STLBGVideo让您的视图控制器的自定义backgroundvideo,实现说明1,实现说明2。 Advance.swift - 简单易用,功能强大的动画框架库。...Interpolate.swift - 手势驱动交互式转场动画框架库。这个很专业,且非常有意思。 INPopoverController - OS X可自由定制的Popover视图

23.5K10

Ios常用第三方框架(二)

表相关与Tabbar SWTableViewCell - 国内开源作者,带很多手势的表单元格。 MCSwipeTableViewCell - 带很多手势的表单元格。...LxTabBarController - 改变了原生tabbar切换tab时的生硬效果,并加入滑动切换手势(有和界面上的其它手势发生冲突的风险,可根据具体项目予以关闭),swift版本。...Sapporo - swift 单元格模型驱动的集合视图管理器组件。又一个超实用的“轮子”。...JZNavigationExtension - 多功能导航控制器,可以透明返回栏。 NavTopImage.swift - NavigationController动态缩放titleView。...ZWSlideViewController - ZWSlideViewController多页滑动视图控制器(类似新闻类门户APP),可以用最简单的继承方法使用,也可以不用继承,只用菜单或主视图页面,可实现丰富的定制

7.6K60

iOS 9 Storyboard 教程(二上)介绍Segue静态单元格(static cell)

view controller.在另一方面,segue所做的改变都在控制器上.通过点击button,tableViewCell,手势等等来触发segue....这就是所谓的”modal” segue.新的控制器完全把先前的界面盖住了.用户不能与底层的控制器进行交互直到把modal出来的控制器关闭为止.后面你也会”看到”segue在导航控制器(Navigation...然而新的控制器并不是非常有用 – 你甚至不能关闭它返回到上一个控制器.那是因为只有一个方法–虽然它可以从Player控制器到这个新的控制器,但是它却不能返回.....每一个静态单元格都只有一个实例,所以它完全是可以接受的在视图控制器里通过连线连接它们的视图..... ---- Note: 如果你创建了一个有很多静态单元格的控制器–很多都适合可见的frame–然后你可以用鼠标或触摸板滑动手势(2指点击)滑动它们在Interface Builder里.这也许不会立即就可以看见

3.2K10

flutter上拉抽屉效果 flutter拖动抽屉效果

,也可配置关闭这个功能; 2、 抽屉关闭状态时,向上滑动,滑动过一定的高度时自动向上滑动打开,当没有滑动过一定的高度时,自动向下滑动,呈关闭状态; 3、 抽屉打开状态时,当滑动视图处于顶部时,向下滑动,...1 添加依赖 实现抽屉效果,技术内容涉及如下: 1、 手势的拖动 2、 轻扫手势的识别 3、 Transform的视图移动 4、 AnimationController的过渡 5、 NotificationListener...省略 } 在这里也声明创建了一个ScrollController ,用于抽屉视图中的滑动视图,声明的抽屉控制器DragController 用来控制抽屉的打开与关闭,代码如下: ///关闭抽屉 dragController.close...///自动滑动的时间 duration: Duration(milliseconds: 800), ///抽屉的Widget dragWidget: buildListView...( ///列表的控制器 与抽屉视图关联 controller: scrollController, ///需要注意的是这里的控制器需要使用 ///builder

3.3K51

iOS好用的第三方侧边栏控件——MMDrawerController

二、MMDrawerController的使用及相关设置         MMDrawerController的使用十分简单,只需将中心视图控制器和左边栏视图控制器传入初始化方法即可完成MMDrawerController...= 1 << 1, //在中心视图控制器上推动时可以关闭侧边栏 MMCloseDrawerGestureModePanningCenterView = 1 << 2,...//在中心视图控制器边缘20单位内拖动是可以关闭侧边栏 MMCloseDrawerGestureModeBezelPanningCenterView = 1 << 3, //...点击导航栏时可以关闭侧边栏 MMCloseDrawerGestureModeTapNavigationBar = 1 << 4, //点击中心视图控制器视图时可以关闭侧边栏...5.不能在中心视图控制器之上呈现侧边栏视图。 专注技术,热爱生活,交流技术,也做朋友。 ——珲少

2.8K20

Swift 视图抖动扩展一

要给视图添加一个抖动效果,比如登录时输入框校验出错给出提示之类的~~~反正就是项目中用到了咯。。。...那就写个就是了 基本思路就是让视图左右移动或者上下移动 调用视图的仿射变换函数就可以了吧 view.layer.setAffineTransform( CGAffineTransform(translationX...: 2, y: 0)) 这就可以让视图往左变换了,往右就是-2咯,改Y就是上下呗 抖动,抖动肯定是有次数的,我们根据次数来移动视图,每次调用自身扩展修改方向 具体代码我就粘在下面咯,反正也没多少行 //...// UIView+ZHYShake.swift // UIViewShake // // Created by ZHY on 2017/8/16. // Copyright © 2017年...view.shake(direction: .vertical) 再粘一个完全的调用 label.shake(direction: .horizontal, times: 9, interval: 0.03

1K10

Mac开发跬步积累(二):NSViewController 转场动画精耕细作

图片来自网络 与iOS相比,在macOS中,控制器的转场情景相对要简洁一些,没有iOS中导航控制器的Push和Pop动画以及边缘返回手势, 保留下的Present方式,倒是提供了特有的切换方式, 可以供我们使用出许多效果...transition仅在控制器child ViewController之间进行切换....添加需要切换的控制器: RedController 和BlueController 为自定义的两个控制器,仅显示不同的视图颜色....动画完成后,移除视图 viewController.view.removeFromSuperview() } } } 示例效果: 自定义present...自定义present 动画时,需要注意事件穿透问题: 由于显示出来的控制器视图(Controller View)是通过addSubView方式添加到容器视图中,因此在控制器视图(Controller

2.6K40

UIkit Dynamics 投掷效果

前言:上章UIKit Dynamics 置身真实世界介绍了基本用法,下面我们继续深入学习——手势跟Dynamics结合的用法 一、触摸处理 1、在ViewController.swift添加以下属性,并在...另外,在view添加一个手势识别器(Pan Gesture Recognizer),打开ViewController.swift并将此新方法添加到该文件中: @IBAction func handleAttachmentGesture...现在加上Dynamics,使其动态化 首先,我们得让imageView跟随我们的拖动而移动,用到Dynamics中的一个类--UIAttachmentBehavior 打开ViewController.swift...originalBounds = imageView.bounds orignalCenter = imageView.center 上面的代码设置了一个UIDynamicAnimator——基于物理动画的UIKit引擎,将视图控制器视图作为参考视图来定义...将锚点连接到视图就像安装一个不可见的杆,将锚点连接到视图上的固定附件位置。 3、更新红色方块以指示锚点,蓝色方块表示imageView中附加的点。当手势开始时,这些将是相同的点。

1.1K50

iOS 自定义转场动画

- (void)animateTransition:(id )transitionContext{ //取出转场前后的视图控制器...UIViewController *)[transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; //取出转场前后视图控制器上的视图.../完成转场操作 [self finishInteractiveTransition]; //取消转场操作 [self cancelInteractiveTransition]; 3、转场时最上层的视图控制器需要遵循...同上 3、在push动画之前设置导航控制器的转场动画代理,转场时最上层的视图控制器需要遵循的协议,并设置为代理,并实现如下代理方法: /...// 判断导航控制器是否只有一个控制器,如果只有一个控制器,肯定是根控制器 if (self.childViewControllers.count == 1) { // 表示用户在根控制器界面

1K90

iOS 自定义转场动画

- (void)animateTransition:(id )transitionContext{ //取出转场前后的视图控制器...UIViewController *)[transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; //取出转场前后视图控制器上的视图.../完成转场操作 [self finishInteractiveTransition]; //取消转场操作 [self cancelInteractiveTransition]; 3、转场时最上层的视图控制器需要遵循...同上 3、在push动画之前设置导航控制器的转场动画代理,转场时最上层的视图控制器需要遵循的协议,并设置为代理,并实现如下代理方法:...// 判断导航控制器是否只有一个控制器,如果只有一个控制器,肯定是根控制器 if (self.childViewControllers.count == 1) { // 表示用户在根控制器界面

1.3K50

iOS 9 Storyboard 教程(二下)

当用户点击Cancel按钮的时候,这个控制器将会关闭并且不管你输了什么数据都不会保存.这个部分用unwind segue已经起作用了....每当segue将要创建的时候prepareForSegue(_:sender:)都会被调用.在退回(dismiss)这个视图的时候,你需要重写这个方法来存储你输入的玩家对象的数据. ---- Note:...当你关闭 Add Player控制器,也点击了Cancel和Done按钮的时候,你应该会看到deinit里print()方法输出地状态信息.如果你再一次打开了这个控制器,你应该也会再一次看到从init?...现在让我们给这个新的控制器一些数据来显示吧.在GamePickerViewController.swift中,把一个具有硬编码值的games字符串数组添加到顶部: var games:[String]...else { cell.accessoryType = .None } return cell } 这就给包含当前选中游戏名称的单元格设置了一个对号.例如被这个app的用户赞赏的一些小的手势

2.2K10

最新iOS设计规范六|10大交互规范(User Interaction)

激活按钮或者选择某个对象 拖动(Drag):把一个元素从一边移到另一边,或者在屏幕内拖动某个元素 滑动(Flick):快速滑动或平移 横扫(Swipe):当用一根手指横扫时,可以用来返回到上一个屏幕、呼出在分屏视图控制器中的隐藏视图...旋转(Rotate):旋转图像或视图 摇晃(Shake):撤销或重做 六、3D 触控(3D Touch ) 3D触摸可以说是为触摸交互方式提供了另一个维度的交互,在支持3D触摸的设备上,用户可以通过对屏幕施加不同程度的压力来唤醒不同的功能...设计出色的左撇子和右撇体验。 只要有可能,对用户的双击手势设置作出回应。 必要时给人们提供一种启用自定义双击行为的方法。 切勿使用双击手势来执行修改内容的动作。...十四、游戏控制器(Game Controllers) 游戏控制器可以增强游戏玩法并增加人们对游戏的沉浸感。支持尽可能多的游戏控制器为人们提供了更多与您的游戏或应用进行交互的方式。 ?...确定游戏控制器要求。 在启动时确认所需的游戏控制器连接。 帮助人们了解在您的应用程序中使用游戏控制器的优势。 测试所有受支持的输入设备。

3.9K30

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

从后往前遍历控件,重复前面的两个步骤 如果没有符合条件的控件,那么就自己最适合处理 原理 // point:是方法调用者坐标系上的触摸点的位置 - (UIView *)hitTest:(CGPoint...;就会将事件顺着响应者链条往上传递,传递给上一个响应者 4> 接着就会调用上一个响应者的touches….方法 如何判断上一个响应者 1> 如果当前这个view是控制器的view,那么控制器就是上一个响应者...2> 如果当前这个view不是控制器的view,那么父控件就是上一个响应者 响应者链的事件传递过程 如果view的控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它的父视图视图层次结构的最顶级视图...UIGestureRecognizer 为了完成手势识别,借助于手势识别器----UIGestureRecognizer 利用UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势...UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势 UITapGestureRecognizer(敲击) UIPinchGestureRecognizer

94970

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

某些对象是用来管理内容显示如何绘制的,这些对象应该是管理如何平铺显示内容的视图,以便于没有视图可以超过屏幕的尺寸。就是当用户滚动时,这些对象应该恰当的增加或者移除视图。          ...一个滚动视图也可以控制一个视图的缩放和平铺。当用户做捏合手势时,滚动视图调整偏移量和视图的比例。当手势结束的时候,管理视图内容显示的对象,就应该恰当的升级视图的显示。...当手势在处理的过程中,滚动视图不能够给视图,发送任何跟踪的调用。...假如你设置canCancelContentTouches为YES,那么当你在UIScrollView上面放置任何视图的时候,当你在视图上移动手指的时候,UIScrollView会给视图发送touchCancel...它在这些对象之间保持了松散的配对,视图本身与视图控制器或任何其它的控制器对象,委托不是滚轴视图的直接子类,它比起牢固配对的子类更加的松散。

37030

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

II 响应者链的事件传递过程 1).如果view的控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它的父视图 2).在视图层次结构的最顶级视图,如果也不能处理收到的事件或消息,则其将事件或消息传递给...view,那么控制器就是上一个响应者。...如果当前这个view不是控制器的view,那么父控件就是上一个响应者。 2.2 事件传递的完整过程 先将事件对象由上往下传递(由父控件传递给控件),找到最合适的控件来处理这个事件。...view;--从后往前遍历自己的控件 for (int i = self.subviews.count-1; i >= 0; i--) { //获取控件...1)必须得自定义view 2)由于是在view内部的touches方法中监听触摸事件,因此默认情况下,无法让其他外界对象监听view的触摸事件 3)不容易区分用户的具体手势行为 3.1 方式二:手势识别功能

88230

iOS 中的事件响应

从后往前遍历视图重复执行 指的是按照 FILO 的原则,将其所有视图按照「后添加的先遍历」的规则进行命中测试。...UIView:若视图控制器的根视图,则其 nextResponder 为控制器对象;否则,其 nextResponder 为父视图; UIViewController:若控制器视图是 window...的根视图,则其 nextResponder 为窗口对象;若控制器是从别的控制器 present 出来的,则其 nextResponder 为 presenting view controller; UIWindow...当用户在 UIScrollView 的一个视图上按下时,UIScrollView并不知道用户是想要滑动内容视图还是点击对应视图,所以在按下的一瞬间, 事件 UIEvent 从 UIApplication...:inContentView:方法询问是否将事件传递给对应的视图 (如果返回 NO, 则该事件不会传递给对应的视图,如果返回 YES,则该事件会传递给对应的视图,默认为 YES); 当事件被传递给视图

2.6K11

Swift:静态工厂方法

swift: 静态工厂方法 视图 Views 视图是我们在编写UI代码时必须设置的最常见对象之一。...虽然我们可能无法完全摆脱视图控制器(或与此相关的视图)的子类化,但是某些类型的视图控制器可以从工厂方法中受益。...尤其是在使用视图控制器时,我们通常最终会得到一组视图控制器,它们只能在其中呈现特定状态,而不是在其中包含大量逻辑。对于那些视图控制器,将其设置移动到静态工厂API可能是一个很好的解决方案。...特别是如果与"Swift:将视图控制器用作插件" 中的便捷API的稍加修改版本结合使用,我们现在可以在执行异步操作时轻松添加预先配置的加载视图控制器: class ProductListViewController...handle(result) } } } 对添加便捷API的唯一修改是使其返回添加的视图控制器,从而可以在使用点语法的同时获取对其的引用。

2.3K10
领券