如何使用Mac OS X Cocoa事件进行多点触控手势

时间:2009-01-31 18:27:13

标签: cocoa osx-leopard

我正在编写一个在NSScrollView中嵌入了NSView的程序,用户可以对其进行缩放。我很乐意进行设置,以便用户可以使用MacBook Air和新的unibody MacBooks / MacBooks Pro支持的多点触控捏动手势以及Safari和iPhoto等应用程序来缩放视图。我已经通过Apple的文档进行了搜索,无法弄清楚如何做到这一点。

  1. 是否支持使用Mac OS X 10.5 Leopard上的公开API?
  2. 如果不是,私有API有多“糟糕”(例如,它只是一个未声明的常量或一组全新的方法)?

1 个答案:

答案 0 :(得分:12)

编辑:Snow Leopard为手势和多点触控添加了支持的API。见AppKit release notes for Snow Leopard; ⌘F表示“手势”和“MultiTouch”(原文如此)。如果您使用下面的内容,它们看起来会非常熟悉,但可能存在一些细微差别,所以无论如何都请阅读新文档。


  

是否支持在Mac OS X 10.5 Leopard上使用公开的API?

没有。 10.5.0根本不支持它,10.5.1到10.5.6使你实现了未记录的方法。

  

如果没有,私有API有多“糟糕”(例如它只是一个未声明的常量或一组全新的方法)?

一点也不差。 You have to implement some undocumented event methods in your view.由于你是实现这些方法的人,所以如果Apple更改方法,你不应该崩溃;所有这一切都将会停止工作。

但是,如果您要从事件中检索绝对(非增量)放大或旋转,那么这些是事件的尚未记录的方法,因此您应该使用respondsToSelector:消息来保护这些消息并对方法的返回值进行仔细的范围检查。