快速搜索这个问题没有给我任何结果。同时也不好解释,我想从这个方法就一切都清楚了。请看看这个:
func tap(sender: AnyObject, action: Selector) -> UITapGestureRecognizer {
let tap = UITapGestureRecognizer(target: sender, action: action)
tap.delegate = sender
return tap
}
错误:
Type 'AnyObject' does not conform to protocol 'UIGestureRecognizerDelegate'
问题是需要为 AnyObject
编写什么来避免收到此消息?还是其他方式?
最佳答案
假设 sender
始终是 UIGestureRecognizerDelegate
类型,您可以使用强制向下转换:
tap.delegate = sender as UIGestureRecognizerDelegate
否则,使用失败的转换:
if let delegate = sender as? UIGestureRecognizerDelegate
{
tap.delegate = delegate
}
作为引用,看看Type Casting for Any and AnyObject包含在 Swift 编程语言指南中。
请注意,对我来说,这种分配委托(delegate)的方式似乎不寻常且容易出错。
关于ios - 如何传入带delegate的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28833438/