看看这个示例代码:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let letterButton = UIButton.buttonWithType(.Custom) as UIButton
self.view.addSubview(letterButton)
letterButton.addTarget(self, action:Selector("buttonDidTap:"), forControlEvents: .TouchUpInside)
}
func buttonDidTap(button: UIButton!) {
print(button.char)
}
}
Run Code Online (Sandbox Code Playgroud)
UIButton只要Selector是公共的或内部的,工作的目标操作就可以了,但是如果它是私有的,它会因为无法识别的选择器发送到实例而崩溃
有什么办法可以实现吗?我不想公开或内部使用tap功能.
我读过Apple的" 纸板编程指南",但它没有回答我的特定问题.
我正在尝试编写一个Cocoa应用程序(用于OS X,而不是iOS),它将跟踪写入普通粘贴板的所有内容(因此,无论何时任何应用程序复制和粘贴,但不是,例如,拖放,也使用NSPasteboard).我可以(几乎)通过基本轮询后台线程上的常规粘贴板并检查changeCount来完成此操作.当然,这样做会让我觉得内心很脏.
我的问题是,有没有办法让粘贴板服务器在对普通粘贴板进行更改时通过某种回调通知我?我在NSPasteboard类引用中找不到任何内容,但我希望它潜伏在其他地方.
我可以想象实现这一点的另一种方法是,如果有一种方法可以将一般的粘贴板实现替换为NSPasteboard的子类,我可以定义自己来发出回调.也许这样的事情可能吗?
如果公共的App Store合法API可以实现这一点,我会更加喜欢,但如果需要使用私有API,我也会这样做.
谢谢!
在我的应用程序中,我希望在NSPasteboard中添加一些内容时收到通知.如果我从任何其他程序复制文本,我希望我的应用程序知道它.
在某处我读到它不可能那样做.我应该创建一个计时器并自己检查NSPasteboard的内容.
这是这样做的吗?或者有任何类型的通知吗?