iOS如何自定义支持长按操作的按钮

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS如何自定义支持长按操作的按钮相关的知识,希望对你有一定的参考价值。

参考技术A 一般情况下按钮都是只能一次一次的按,那如果像添加商品那种可以长按的又该怎么做呢。

一步一步来,如果我们当按钮按下的时候我们处理按钮按下的消息可不可以呢,来我们看一下UIControlEvents.touchDown会不会一直触发:

结果如下图:

就只打印了一次,很显然这是不行的。那我们再试一试其它的方法。

那touchDown只能触发一次,那我们给Button添加长按手势会怎样呢?
参考

结果如下图:

哎,可以了啊,终于搞定了😆,但是仔细观察一下控制台的打印,长按手势的触发并不均匀。这导致了什么呢,如果你加商品的时候,我按了下去,一下就加了5,6件,也可能加了2,3件,这样体验不好啊。看来添加长按手势也是不行的。

那我们又想要多次触发又想要时间均匀,那我们给button加上个timer,当按钮按下的时候我们就开启,当手离开的时候我们就停止不就行了么,说干就干。

结果如下:

Good!结果很漂亮,每隔1秒触发,间隔很均匀,自己也可手动调整触发的时间间隔。
(ps:至于按钮的话就自己封装了)

我自己封装了一个基于RxSwift的长按按钮 LongPressButton ,欢迎star

iOS开发:UINavigationController自定义返回按钮,系统导航支持侧滑返回

当你使用系统导航想拦截用户返回事件时,无法拦截侧滑返回
当你自定义导航或者隐藏导航后,iOS系统导航的侧滑返回就失效了,那么用户体验将大打折扣
网上大部分自定义导航的解决方案是:给页面添加全局的轻扫手势,那么又区别于原生系统,改变了用户的操作习惯

在开发过程中,你是否也遇到了这样的困惑呢?希望这篇文章可以解决你的困惑!


自定义返回按钮

  1. 自定义一个导航的基类,继承于UINavigationController

    @interface FQBaseNavigationController : UINavigationController
    	
    @end
    
  2. 遵循导航代理协议

    @interface FQBaseNavigationController ()<UINavigationControllerDelegate

以上是关于iOS如何自定义支持长按操作的按钮的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发:UINavigationController自定义返回按钮,系统导航支持侧滑返回

iOS WKWebView长按自定义菜单功能

iOS 导航栏-返回按钮-自定义

iOS开发:UINavigationController自定义返回按钮,系统导航支持侧滑返回

检测音量按钮的长按和短按 - iOS

vue自定义长按指令