哪个对客户端更轻?:UIPanGestureRecogizer 在需要时连续监听或添加和删除

which is lighter on the client?: UIPanGestureRecogizer continuous listening or adding and removing when needed

所以我正在制作一个消息传递应用程序,允许用户使用 UIPanGestureRecognizer 隐藏键盘。我只希望用户在垂直平移时隐藏键盘,仅在显示键盘时。这是我的代码:

let panGesture = UIPanGestureRecognizer(target: self, action: #selector(viewPanned(_:)))
panGesture.minimumNumberOfTouches = 1
panGesture.maximumNumberOfTouches = 1
panGesture.delegate = self
self.view.addGestureRecognizer(panGesture)

所以我的问题是:

哪个选项可以减轻应用程序的工作量?

  1. viewDidLoad 上添加 UIPanGestureRecognizer,因此每当用户平移时,都会调用 viewPanned即使键盘未显示,它会检查键盘是否显示,或者
  2. 每次键盘显示时,将panGesture添加到主视图,每次隐藏时,将panGesture从主视图中删除,如下所示。

    self.view.removeGestureRecognizer(panGesture) panGesture.delegate = nil

这实际上取决于您显示键盘的频率,如果您在注册表单中经常显示键盘,最好将其添加到 viewDidLoad 而不是花时间(以毫秒为单位)添加和删除键盘,否则执行该添加/删除方法,除了它是执行(cpu 周期)和内存(add/remove)

之间的权衡

做哪个能让你的代码更干净。

哪个工作量更轻并不重要,只有在存在实际可衡量的问题时才进行优化。