現象
Storyboardに配置したUIButtonのInspectorからSent Eventsが消え、ボタンアクションを設定出来なくなった。
原因
UIButtonのextensionでProtocolを継承させたことによるものだった。
TargetedExtensionを利用してUIButtonを拡張しようとしたことにより発生した。
public protocol ExampleCompatible {
associatedtype CompatibleType
var ex: CompatibleType { get }
}
public final class Example<Base> {
let base: Base
public init(_ base: Base) {
self.base = base
}
}
public extension ExampleCompatible {
public var ex: Example<Self> {
return Example(self)
}
}
extension UIButton: ExampleCompatible { }
extension Example where Base == UIButton {
func hoge() {
}
}
「そりゃたしかにそうなるわ」という感じでした。
解決
UIButtonを拡張しない
UIButtonを継承したカスタムクラスを作っても良いし、角丸や枠線等であればCALayerに対して拡張すれば良い。
考え無しにextension生やした結果でした・・orz