美文网首页iOS开发
UISwitch 重复触发action方法

UISwitch 重复触发action方法

作者: 天天有写不完的代码 | 来源:发表于2017-08-10 12:02 被阅读33次

UISwitch

理论上,只用当用户点击了UISwitch,才会触发,vauleChange 的action方法
但是实际开发中,发现iOS10机型上,如果在action方法里调用了-setOn:animated:或者setOn: ,就会多触发一次action方法。

解决方案

  1. 避免在valueChange方法里调用-setOn:animated:setOn:
  2. 如果无法避免,使用dispatch_async,在主队列执行这些方法(这个方法有个缺点,比较卡的手机会看到闪动的现象)
- (IBAction)valueChanged:(id)sender {
    ...
    dispatch_async(dispatch_get_main_queue(), ^{
       [sender setOn:YES];
    });
    ...
}

3.iOS 10 以下机型不会出现这个问题,iOS11 待验证

参考

UISwitch setOn(:, animated:) does not work as document

相关文章

  • UISwitch 重复触发action方法

    UISwitch 理论上,只用当用户点击了UISwitch,才会触发,vauleChange 的action方法但...

  • vuex笔记

    dispatch 方法触发一个action(调用主数据接口)commit 方法触发一个mutation(更新主接...

  • RecyclerView滑动分析

    滑动会触发onTouchEvent方法MotionEvent.ACTION_MOVE中: RecyclerView...

  • Redux

    创建counter方法,state(初始值),action(触发的动作) 引入 createStore from ...

  • iOS UISwitch

    1.UISwitch的初始化 2.设置UISwitch的初始化状态 3.事件触发 4事件 在页面效果图 点击按钮效...

  • vue store使用

    1、流程顺序 “相应视图—>修改State”拆分成两部分,视图触发Action,Action再触发Mutation...

  • vuex

    如图是vuex的模块结构 使用vuex app.js触发模块action中的toggleSideBar方法: 用户...

  • action和redux-actions库

    触发一个reducers和effects中的方法同名的action情况 如果reducers和effects中的方...

  • 微信小程序 - 8.组件(action-sheet操作反馈上拉菜

    一、action-sheet wxml增加按钮 , 点击触发action-sheet js tapIndex : ...

  • ios开发UI篇—UISwitch

    概述 -UISwitch提供二进制选项的控件,如开/关。 -UISwitch继承自UIControl 属性和方法 ...

网友评论

    本文标题:UISwitch 重复触发action方法

    本文链接:https://www.haomeiwen.com/subject/wachrxtx.html