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

iOS开发中解决UIScrollView滚动时NSTimer失效的问题

我曾经遇到过这样的问题,但需求是即使滑动scrollView,NSTimer也不能失效,于是就好好地研究了下这个问题。最终发现是NSTimer选择的一个模式的问题。...,并且选择NSDefaultRunLoopMode这个默认的模式。...在选择这个默认的模式之后,如果我们不与UI进行交互那么NSTimer是有效的,如果我们与UI进行交互那么主线程runloop就会转到UITrackingRunLoopMode模式下,不能处理定时器,从而定时器失效...让定时器不失效的方式有两种:1.改变runloop的模式(NSRunLoopCommonModes),无论用户是否与UI进行交互主线程的runloop都能处理定时器。...2.开启一个新的线程,让定时器在新的线程中进行定义,这时定时器就会被子线程中的runloop处理。

1.4K20

iOS中Mint Picker滑动时页面跟着滚动的解决方法

项目在使用饿了么前端团队的 Mint UI 库的 Picker 和 Datetime picker 组件,iOS系统访问时会出现滑动穿透的现象。...主要表现在用手指在弹出层触摸滑动时,页面也跟着滚动,严重影响体验。...解决方法: 1、由于 Picker 组件的滚动是用 touch 事件 + translate 实现的,所以我们可以在 Picker 弹层出现的时候禁止页面的默认滚动机制,Picker 弹层消失时解除禁用页面的默认滚动机制...body设置 overflow: hidden ,弹层关闭时设置 overflow: scroll/auto 除了 Mint-UI 的 Picker,其他库的 Picker 组件可能也会有类似问题,比如...问题产生的原因是一样的,同样可以用这个思路解决。 参考文档: ios中picker滑动穿透bug

1.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS类似淘宝头条的文字滚动广告

    最近两个项目都用到类似淘宝头条的功能,就是文字上下无限循环滚动,所以决定简单封装一下,以便以后使用。...由于习惯用SDCycleScrollView来做广告图的无限循环滚动,所以这里文字无限滚动的核心是源于此。 效果如下: ?...demo效果 考虑到这种滚动需求样式的多变性,这里的封装还是基于 UICollectionView,提供上下和左右滚动两种方式,而且基于UICollectionView的复用特性,性能也是不错的。...FHCTopLineViewDelegate提供了两个代理方法 /** 点击滚动文字回调 @param topLine FHCTopLineView @param index 选中文字的index...didScrollToIndex:(NSInteger)index; 平时用习惯了,所以控制滚动的属性也是参照SDCycleScrollView。

    2.7K30

    滚动穿透的6种解决方案【已自测】

    但是晴天霹雳来的太快,在模拟器是起作用的,但是到了真机上,body还是会滚动。所以必须添加上fixed固定定位,才能在弹窗出现后,body不能被拖动。...不过为了流畅体验,可以加上-webkit-overflow-scrolling: touch,以解决在IOS上滚动惯性失效的问题,提高滚动的流畅度。...加一个属性 -webkit-overflow-scrolling: touch;/* 解决在IOS上滚动惯性失效的问题 */ 但是这只是简单地解决了一个问题:实现了滑动弹窗其他地方(蒙层背景),底部body...因此还需要我们对弹层的可滚动区域的滑动事件做监听: 第一种情况,若向上滑动时,到达底部;或者第二种情况,若向下滑动时,已到顶部。 这两种情况任意一种发生时,就阻止滑动事件。 这段逻辑代码如下: ?...局限问题: 这个方法我在真机上测试时发现一个问题,是IOS的: 大家应该都知道IOS的页面顶部继续下拉或者底部继续上拉,都会出现页面后边的背景,这个在手机上很常见。

    13.8K31

    吸顶效果解决方案

    -> 滚动 -> 手指抬起 -> 惯性滚动 -> 停止滚动 整个过程,直到停止滚动时才会触发1次scroll事件,也就是说,IOS8以下的scroll变成了scrollend。...,iscroll等等 有前辈做了详细测试,见参考资料1 定时器在手指没有离开屏幕时不会执行,touchmove触发频率足够,也能拿到scrollTop,但touchend后,惯性滚动期间,没有任何事件可用...,拿不到这段的scrollTop,很难预测这段惯性滚动距离(减速运动),甚至不确定各IOS版本这段距离的计算方式是否相同 iscroll这种假滚动,自然可以实时获取滚动位置,iscroll有一个专用版本来做这个事情...IOS 8+的Safari和WKWebView能够疯狂触发scroll,无论手指在不在屏幕上,无论是不是惯性滚动期间。...hidden);吸顶状态时,让tab列表可以滚动(overflow-y: auto) 但是IOS sticky不由我们控制,且无法实时获知吸顶状态,想要获知吸顶状态的话,又回到了最初的问题,页面滚动过程中

    3.6K10

    实现 iOS 前台时的推送弹窗效果

    作者:Pikacode 原文链接:http://www.jianshu.com/p/67864e1c2085 本文获作者授权转载 或许很多童鞋还不知道,在 iOS 中收到推送通知时,如果 App 处于前台运行的情况下...然而就是有很多**的产品经理都会提出类似这样的**需求: 那就是在 App 处于前台时一样要弹出推送的窗口,而且还要能点击,能跳转到指定页面,甚至这一需求还涉及到了产品的核心功能。...支持 iOS 7~10 beta,支持模拟器和真机运行。 效果 实际效果如下: ? ?...系统自带的声音 id,系统级的推送服务默认使用的是三全音,id = 1312 其他系统声音 id 可以在这里查询到iOS Predefined sounds 备用地址AudioServices sounds...监听并处理点击事件 添加 Observer 监听 EBBannerViewDidClick,获取推送内容,通过推送时自定义的字段处理自己逻辑,如:跳转到对应页面等。

    1.8K20

    使用 fartscroll.js 让你的网页在滚动时放屁

    放屁绝对不是一个很高雅的行为,但是如果你比较喜欢恶搞,或者在愚人节,或者是一些比较特殊的网页设计中,可以通过 fartscroll.js 这个插件让你的网页在滚动的过程中 放屁。...直接打开 fatscroll.js 的官方页面(http://theonion.github.io/fartscroll.js/),滚动一下,你就可以听到了放屁声音了,你滚动的距离和速度不同,放屁的声音也不同...使用方法也很简单,先下载插件包,解压出来之后,在网页中引入 fartscroll.min.js 这个文件,然后配置下面的参数等,启用这个插件: // 在文档中滚动 400 像素就放屁 $(document...).fartscroll(); // 文档中每滚动 800 像素就放屁 $(document).fartscroll(800); // 网页中没滚动 100 像素就放屁 $("body").fartscroll...(100); // 很多很多的屁 $("body").fartscroll(5); 仅供娱乐和恶搞哈,相信应该没有太多人喜欢在访问你网页的时候,听到你网页在放屁哈哈。

    93320

    移动端滚动研究

    发现触发的时机区分android和ios两种情况,具体可以看下面表格: | 机型(内核) | body滚动 | 局部滚动 | | :-: | :-: | :-: | | ios | 不能实时触发 |...不能实时触发 | | android | 实时触发| 实时触发 | | ios wkwebview内核 | 实时触发| 实时触发 | 不能实时触发表现:只在手指触摸的屏幕上一直滑动时和滚动停止的那一刻才触发...requestanimationframe来在一个线型函数下不断的修改元素的transform来实现手指离开时的一段惯性滚动距离。...和function来实现手指离开时的一段惯性距离。...第二种方案相比第一种要劣势一些,区别在于手指离开时,采用的时css的animation来实现惯性滚动,所以无法直接触发惯性滚动过程中的onscroll事件,只有在animation结束时才可以借助animationend

    3.2K20

    实现 iOS 前台时的推送弹窗效果EBForeNotification

    或许很多童鞋还不知道,在 iOS 中收到推送通知时,如果 App 处于前台运行的情况下,推送的顶部弹窗是不会弹出来的。...然而就是有很多**的产品经理都会提出类似这样的**需求: 那就是在 App 处于前台时一样要弹出推送的窗口,而且还要能点击,能跳转到指定页面,甚至这一需求还涉及到了产品的核心功能。...支持 iOS 7~10 beta,支持模拟器和真机运行。...completionHandler(UIBackgroundFetchResultNewData); } soundID 参数 iOS 系统自带的声音 id,系统级的推送服务默认使用的是三全音,id =...,获取推送内容,通过推送时自定义的字段处理自己逻辑,如:跳转到对应页面等。

    1.7K10

    解决AMD CPU 启动Android模拟器时无法安装Intel HAXM 的问题

    大家好,又见面了,我是你们的朋友全栈君。 刚买的电脑,是用的AMD的CPU,在安装Android开发环境时,遇到以下问题: Failed to install Intel HAXM....我的电脑配置是: 在网上一搜,说是Android Studio已经支持AMD CPU的,后面在Android SDK配置项中终于发现有这么一项。...(根据下面图中2处红色标记就可以找到Android对应的AMD模拟器驱动) 貌似看到了希望,经过一番查找,Android官方有说明的,英文好的同学可以直接看原文: https://androidstudio.googleblog.com...2.关闭Win10的Hyper-V和Windows Hypervisor Platform 和 Windows Sandbox。 (如果不知道是该勾选,还是不勾选,跟下面截图的选中状态一致即可。)...至此,就可以使用Android针对AMD处理器的高性能模拟器了。

    6K30

    IOS开发中滑动页面时NSTimer停止的问题

    我们在做倒计时的时候,发现当你手指按着屏幕不放,拖动tableView滑动的时候,写在cell上得倒计时停止倒计时,松开继续倒计时。研究发现就是拖动tableView滑动时,NSTimer停止了。...接着上面的话题,在开启一个NSTimer实质上是在当前的runloop中注册了一个新的事件源,而当scrollView滚动的时候,当前的 MainRunLoop是处于UITrackingRunLoopMode...的模式下,在这个模式下,是不会处理NSDefaultRunLoopMode 的消息(因为RunLoop Mode不一样),要想在scrollView滚动的同时也接受其它runloop的消息,我们需要改变两者之间的...不会开启新的进程,只是在Runloop里注册了一下,Runloop每次loop时都会检测这个timer,看是否可 以触发。...,就是在向服务器异步获取图片数据通知主线程刷新tableView中的图片时,在 tableView滚动没有停止或用户手指停留在屏幕上的时候,图片一直不会出来,可能背后也是这个runloop的mode在做怪

    1.8K90

    vue返回上一页面时回到原先滚动的位置

    项目结束,测试时发现在首页商品列表中,向上滑动几页后点击进入详情,从详情页面返回商品列表时,页面回到了最顶部,测试不通过说是用户体验不好,要求从哪里点击进去返回该页面时回到原先的滚动页面。...component: index, meta: { keepAlive: true } }, 这样在index.vue中,mounted方发只走一次,在浏览器上实现了返回原来滚动位置的目的...但是在手机上测试,发现没用, 解决手机上实现目的的方法: //在页面离开时记录滚动位置 beforeRouteLeave (to, from, next) { this.scrollTop =...document.documentElement.scrollTop || document.body.scrollTop next() }, //进入该页面时,用之前保存的滚动位置赋值 beforeRouteEnter

    3.1K20
    领券