美文网首页
为iOS点击增加触控反馈

为iOS点击增加触控反馈

作者: flexih | 来源:发表于2019-03-10 23:54 被阅读0次

iOS 10增加了触控反馈的类UIFeedbackGenerator及其子类,使得触控反馈不再只能使用私有的sound id。
这里不再赘述触控反馈本身,而是提出一种通用的办法为比如UIButton增加触控反馈。示例代码FeedbackDemo在Github。
UIApplication类有一个方法:

func sendAction(_ action: Selector, to target: Any?, from sender: Any?, for event: UIEvent?) -> Bool

其注释如下:

Normally, this method is invoked by a UIControl object that the user has touched. The default implementation dispatches the action method to the given target object or, if no target is specified, to the first responder. Subclasses may override this method to perform special dispatching of action messages.

所以可以在这个方法里处理所有Button的事件:

override func sendAction(_ action: Selector, to target: Any?, from sender: Any?, for event: UIEvent?) -> Bool {
   let sent = super.sendAction(action, to: target, from: sender, for: event)
   if sent, let object = sender as? Feedbackable, object.fb_on {
      object.fb_vibrate()
   }
   return sent
}

Feedbackable定义如下:

public protocol Feedbackable {
    var fb_style: UIImpactFeedbackGenerator.FeedbackStyle { get set }
    var fb_on: Bool { get set }
    func fb_vibrate();
    func fb_prepare();
}

extension Feedbackable where Self: UIView {
...
}

extension UIButton: Feedbackable {
}

可以通过设置fb_on控制只在某一种情况下开启反馈,在另一种情况下关闭反馈,这是市面上大部分app里“点赞”的处理方式。
具体实现参见FeedbackDemo

相关文章

  • 为iOS点击增加触控反馈

    iOS 10增加了触控反馈的类UIFeedbackGenerator及其子类,使得触控反馈不再只能使用私有的sou...

  • iOS 触控反馈

    触控反馈点击屏幕,屏幕有触感 需要注意的是:在系统设置中,需要打开触控反馈功能

  • 触控事件的学习笔记(待修稿)

    iOS的触控事件是基于多点触控模型。 一、触控可以概述为: 1.触控是用户手指触碰屏幕,或触碰屏幕并在屏幕上移动时...

  • SwiftUI:触控反馈

    尽管 SwiftUI 并未内置任何触控反馈功能,但对于我们来说,使用 UIKit 和 Core Haptics 进...

  • Android进阶——多点触控

    在学习多点触控之前,先复习下常用的单点触控。 单点触控 Android 触摸事件处理的核心方法为onTouchEv...

  • 第一章学习笔记 - 手势和触控

    手势和触控基础知识 触摸控制 是 iOS 系统交互的核心方式。 触控 Cocoa Touch 以尽可能简单地方式实...

  • TouchBar触控反馈小工具 HapticKey v0.5.

    HapticKey Mac版是mac上一款可以为 Touch Bar 带来触控反馈的小工具,反馈有只对 Esc、F...

  • 按钮禁止多点触控

    在做项目过程中,发现多点触控屏幕,按钮触发点击事件会出Bug。然后去网上查了下,禁止按钮多点触控只需要设置:

  • 如何自定义iOS中的控件

    How to build a custom control in iOS 跟踪用户触控,要重写以下方法。 - (B...

  • IOS 3DTouch技术使用

    IOS 3DTouch技术使用 简介 3D Touch是一种立体触控技术,被苹果称为新一代多点触控技术,是在App...

网友评论

      本文标题:为iOS点击增加触控反馈

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