文档章节

iOS手势操作(Swift)

yuiwong
 yuiwong
发布于 2015/10/01 11:08
字数 246
阅读 59
收藏 1

1 继承 UITabBarController (这个例子是这样)

2 Setup gestures (L and R)

override func viewDidLoad() {
	super.viewDidLoad()

	/* setup switch gestures */
	self.swipeLeftGesture = UISwipeGestureRecognizer(target: self,
		action: "onSwipeGesture:")
	self.swipeLeftGesture!.direction
		= UISwipeGestureRecognizerDirection.Left
	self.view.addGestureRecognizer(self.swipeLeftGesture!)

	self.swipeRightGesture = UISwipeGestureRecognizer(target: self,
		action: "onSwipeGesture:")
	self.swipeRightGesture!.direction
		= UISwipeGestureRecognizerDirection.Right
	self.view.addGestureRecognizer(self.swipeRightGesture!)
}

3 实现gestures callback

/* gestures callback */
@IBAction private func onSwipeGesture (sender: UISwipeGestureRecognizer) {
	print(__LINE__, __FUNCTION__)

	if (nil == self.viewControllers) {
		print(__LINE__, "nil viewControllers")
		return
	}

	let dire = sender.direction
	var l = false
	var r = false

	switch (dire) {
	case UISwipeGestureRecognizerDirection.Left:
		/* right-to-left => left: need to show the right one */
		print(__LINE__, "UISwipeGestureRecognizerDirection.Left")
		l = true

	case UISwipeGestureRecognizerDirection.Right:
		print(__LINE__, "UISwipeGestureRecognizerDirection.Right")
		r = true

	default:
		print(__LINE__, "UISwipeGestureRecognizerDirection.xx unhandled")
	}

	let si = self.selectedIndex
	let c = self.viewControllers!.count

	print(__LINE__, "si: \(si) c: \(c)")

	var fromView: UIView?
	var toShow: UIView?

	if (l && (si < (c - 1))) {
		/* right-to-left => left: need to show the right one */
		fromView = self.selectedViewController!.view
		toShow = self.viewControllers![si + 1].view

	} else if (r && (si > 0)) {
		fromView = self.selectedViewController!.view
		toShow = self.viewControllers![si - 1].view
	}

	if (nil != toShow) {
		if (l) {
			/* right-to-left => left: need to show the right one */
			UIView.transitionFromView(fromView!, toView: toShow!, duration: 0.5,
				options: UIViewAnimationOptions.TransitionFlipFromRight,
				completion: {
					if ($0 && (nil != self.viewControllers)) {
						let si = self.selectedIndex
						let to = si + 1

						self.selectedViewController = self.viewControllers![to]
					}
				})
		} else {
			UIView.transitionFromView(fromView!, toView: toShow!, duration: 0.5,
				options: UIViewAnimationOptions.TransitionFlipFromLeft,
				completion: {
					if ($0 && (nil != self.viewControllers)) {
						let si = self.selectedIndex
						let to = si - 1

						self.selectedViewController = self.viewControllers![to]
					}
				})
		}
	}
}

var swipeLeftGesture: UISwipeGestureRecognizer?
var swipeRightGesture: UISwipeGestureRecognizer?

© 著作权归作者所有

上一篇: 使用Markdown
yuiwong
粉丝 0
博文 5
码字总数 2283
作品 0
深圳
高级程序员
私信 提问
全屏手势返回插件 - BBGestureBack

BBGestureBack Full screen return gesture(全屏手势返回 滑动返回 pop 动画效果) iOS 侧滑返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 现在市场上的主流app都有用到各种侧...

Bonway
2018/05/30
337
0
OSChina 技术专题之 Swift 苹果全新开发语言

Swift 是苹果新推出的编程语言,专门针对 OS X 和 iOS 的应用开发。Swift 在各个方面优于 Objective-C,也不会有那么多复杂的符号和表达式。同时,Swift 更加快速、便利、高效、安全。除此之...

OSC编辑部
2014/11/10
4.2K
4
如何判断你是合格的高级iOS开发工程师?

前言 随着移动互联网的高速发展泄洪而来,有意学习移动开发的人越来越多了,竞争也是越来越大,需要学习的东西很多。如何才能在激烈的移动开发者竞争中一枝独秀,成为一名真正合格的高级iOS...

_小迷糊
2018/05/26
0
0
【书坊赠书福利——第二期】《iOS 8开发指南》

本周是人邮IT书坊赠书的第二期,第一期参与度极高,微信君在此感谢你们的支持,第一期获奖赠书已全部寄出。 本周赠品 本周,微信君给大家推荐@人民邮电出版社-信息技术分社 刚刚上架的新书《...

生气的散人
2014/09/23
387
0
仿知乎弹出评论列表 - HWPanModal

HWPanModal 用于从底部弹出控制器(UIViewController),并用拖拽手势来关闭控制器。提供了自定义视图大小和位置,高度自定义弹出视图的各个属性。 功能 支持任意类型的 平滑的转场动画 支持...

匿名
05/24
549
0

没有更多内容

加载失败,请刷新页面

加载更多

Gradle 的项目导入到 IntelliJ 后子项目源代码不能导入

在一个 Gradle 项目中,有若干子项目。 当 Gradle 到如后,子项目不能被 IntelliJ 识别代码。 如下图的这个代码就没有被自动识别。 这个有可能是因为你的这个子项目没有被添加到父项目中。 ...

honeymoose
8分钟前
2
0
苹果cms下载地址及模板地址

https://github.com/magicblack/maccms10 程序下载: https://www.lanzous.com/b204882 教程下载: https://www.lanzous.com/b256378 模板下载: https://www.lanzous.com/b355667 插件下载:......

chenhongjiang
8分钟前
1
0
Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件)

一、HttpPost上传文件 public static String getSuffix(final MultipartFile file){ if(file == null || file.getSize() == 0){ return null; } String......

codeobj
9分钟前
1
0
在Word中怎样批量删除空行,这些点主要注意

在工作中经常接触的办公软件就是Word了,熟练使用Word中的技能是准时下班的保证。这就要求我们对Word中的各项技能都熟练于心,很多朋友诉苦Word中的排版不熟悉,每次写一篇文章排版都要花费很...

干货趣分享
15分钟前
2
0
终端-Linux命令之非交互SSH密码验证-Sshpass

> Sshpass是使用SSH所谓的“交互式键盘密码身份验证”以非交互方式执行密码身份验证的工具 通俗来说就是 使用ssh密码登录 是需要在连接时手动输入密码的,没办法明文连接,如下图,需要交互的...

极客收藏夹
19分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部