这个文章学到的知识:

http://my.oschina.net/CreeveLiu/blog/347913?fromerr=Pg3JEnxF

背景:

xcode:Ver 7.0           sdk:9.0

1>IPAD项目

2>在一个大的controller(mainViewController)中推出一个小的controller(aViewController).

3>推出viewController的代码大意如下:

aViewController.modalPresentationStyle = UIModalPresentationFormSheet;

aViewController.preferredContentSize = CGSizeMake(self.view.frame.size.width / 2,self.view.frame.size.height/ 2);

[mainViewController presentViewController:aViewController animated:YES completion:nil];

效果如下:其中绿色的是aViewController , 白色的背景是mainViewController

-------------------------------------------------- 
需求:

想要点击绿色以外的阴影部分让这个controller dismiss掉。

但是All uncovered areas are dimmed to prevent the user from interacting with them.

(所有不被覆盖的阴影部分是阻止用户交互的,也就是绿色以外的部分)

-------------------------------------------------- 
解决方法:

给  被弹出的viewController  中加入以下方法(例子中的 aViewController)

Link:    http://my.oschina.net/CreeveLiu/blog/347913?fromerr=Pg3JEnxF

以下内容是从链接中copy过来的,深拷贝哟(玩笑:))。怕以后链接失效。

- (void)viewDidAppear:(BOOL)animated

{

[super viewDidAppear:animated];

_tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapBehind:)];

[_tapRecognizer setNumberOfTapsRequired:1];

_tapRecognizer.cancelsTouchesInView = NO; //So the user can still interact with controls in the modal view

[self.view.window addGestureRecognizer:_tapRecognizer];

[_tapRecognizer setDelegate:(id<UIGestureRecognizerDelegate>)self];

}

- (void)handleTapBehind:(UITapGestureRecognizer *)sender

{

if (sender.state == UIGestureRecognizerStateEnded) {

// passing nil gives us coordinates in the window

CGPoint location = [sender locationInView:nil];

// swap (x,y) on iOS 8 in landscape

if (SYSTEM_VERSION_MORE_THAN_8) {

if (UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {

location = CGPointMake(location.y, location.x);

}

}

// convert the tap's location into the local view's coordinate system, and test to see if it's in or outside. If outside, dismiss the view.

if (![self.view pointInside:[self.view convertPoint:location fromView:self.view.window] withEvent:nil]) {

// remove the recognizer first so it's view.window is valid

[self.view.window removeGestureRecognizer:sender];

[self dismissViewControllerAnimated:YES completion:nil];

}

}

}

#pragma mark - UIGestureRecognizer Delegate

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer

{

return YES;

}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

{

return YES;

}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

{

return YES;

}

现在点击阴影部分就可以dismiss了。

--------------------------------------------------

总结:

不加手势的代理方法 是添加不上手势的,FromSheet样式可能是默认禁掉了手势的代理,所以重写一下就好用了。(因为用起来没什么bug,

所以这个原因没仔细研究,先暂时这么理解吧)

--------------------------------------------------

Ipad项目中用到的UIModalPresentationFormSheet,点击阴影部分dismiss 当前presented的controller相关推荐

  1. IDEA为java项目中用到python的模块设置Python interpreter

    IDEA为java项目中用到python的模块设置Python interpreter Java项目中模块用到了python,没有为模块设置Python解释器,因此点击右上角Configure Pyt ...

  2. 在项目中用ts封装axios

    写在前面 虽然说Fetch API已经使用率已经非常的高了,但是在一些老的浏览器还是不支持的,而且axios仍然每周都保持2000多万的下载量,这就说明了axios仍然存在不可撼动的地位,接下来我们就 ...

  3. iOS 项目中用到的一些开源库和第三方组件

    iOS 项目中用到的一些 iOS 开源库和第三方组件 分享一下我目前所在公司 iOS 项目中用到的一些 iOS 开源库和第三方组件, 感谢开源, 减少了我们的劳动力, 节约了我们大量的时间, 让我们有 ...

  4. iOS:项目中用到的Cookie

    1.介绍: 做了这么长时间开发,Cookie真是用的不多,可是现在不一样了,这次的项目我用到了Cookie.其实,Cookie的使用在项目中愈加的频繁,一般情况下,提供的接口是用Cookie来识别用户 ...

  5. yaml for java_细数Java项目中用过的配置文件(YAML篇)

    灵魂拷问:YAML,在项目中用过没?它与 properties 文件啥区别? 目前 SpringBoot.SpringCloud.Docker 等各大项目.各大组件,在使用过程中几乎都能看到 YAML ...

  6. python能调用身份证读卡器吗_最近的项目中用到读卡器,用的华视身份证阅读器,附上SDK使用手册...

    最近的项目中用到读卡器,用的华视身份证阅读器,附上SDK使用手册 1.定义 应用函数开发包含下列文件: termb.dll      API函数的动态联接库 sdtapi.dll     内部动态库 ...

  7. 国外短链接项目。一万次点击220美刀

    大家好,我是四点 一个混迹在互联网上赚钱的人 未来十年一路同行 "国外短链接项目" 今天四点给大家分享一个国外短网址赚钱项目,这是一个点击短链接就可以挣美刀的网站,宣称万次播放最高 ...

  8. iOS项目中用到的一些第三方库

    今天来总结一下项目中用到的一些第三方库. 1. AFNetworking,在github上有3万多颗的星星,用作处理网络请求. 2. MZGuidePages, 这是一个小工具,用于创建首次使用app ...

  9. 高薪程序员面试题精讲系列96之分库分表了解吗?你项目中用到过吗?怎么用的?

    一. 面试题及剖析 1. 今日面试题 分库分表了解吗? 有哪些分库分表的实现方案? 你项目中用到过分库分表吗?怎么用的? 数据库有没有进行过分区? 2. 题目剖析 现在我们出去面试时的现状,真的很贴合 ...

  10. 解决:Flarum完整项目拉取到本地点击任何链接都弹出“请求资源不存在”(报404)

    解决:Flarum完整项目拉取到本地点击任何链接都报404 public文件夹下缺少.htaccess文件,如下即为.htaccess文件内容,复制内容到文件中并命名为.htaccess,将文件放在p ...

最新文章

  1. 【springboot】入门
  2. ovirt官方安装文档 附录F
  3. 构建Chua 混沌电路 - 基本测试
  4. Selenium-switch_to_window出现删除线
  5. linux 往文件写4k大小,[svc]为何linux ext4文件系统目录默认大小是4k?
  6. java登录界面命令_Java命令行界面(第5部分):JewelCli
  7. python获取pid并杀死_用python记录运行pid,并在需要时kill掉它们的实例
  8. java 对象复制字段_利用Java反射机制实现对象相同字段的复制
  9. UITableView 编辑和删除行
  10. python中装饰函数的使用:
  11. CenterNet :Objects as Points/CenterTrack:Tracking Objects as Points
  12. jemalloc java_jemalloc源码结构分析
  13. MySql 使用关键字做字段名
  14. Python 破解 MD5 暗号
  15. 关于四阶魔方中心块还原
  16. 正则:\b 匹配出一个单词的小天使
  17. OPPO R8107刷机包下载_OPPO R8107密码忘记了?点击进来搞定
  18. Makefile文件
  19. 人工智能写作如何应用于法律文书撰
  20. Electron打包React构建桌面应用

热门文章

  1. 删除顺序表中区间内的元素
  2. html如何设置banner,css设置banner图自适应的方法
  3. Easy Connect 当前IE代理启用了自动配置脚本,不允许使用CS客户端登录
  4. C#利用JScript自动计算字符串公式方法
  5. 树莓派无法获取ipv6公网地址和dns解析失败的问题
  6. 一家椰子鸡店,凭什么让客户去了一趟又一趟?到底有什么样的魔力?
  7. 汽车ECU的bootloader程序设计
  8. ECU Bootloader自学笔记
  9. 桌面计算机地址栏在哪,我的电脑地址栏不见了怎么办 地址栏不见了如何解决...
  10. Gis到底可以应用在哪些方面?