В вашем коде необходимо обработать 2 случая.
var touchBlock: ((_ view: ELControl, _ touches: UIEvent, _ event: UIEvent) -> Void?)?
Ваше определение блока показывает, что вы можете передавать только ненулевые значения в блок и даже в ваш блокнеобязательно.Так что @ Игорь предложил вам вызвать блок следующим образом:
self.touchBlock?(<non-nil-value>, touches, event)
Здесь, ?
пометить блоком, будет обрабатывать необязательное условие блока.
Но еслиВы хотите другую операцию, если блок равен нулю.Тогда вы можете использовать для этого условие if-let :
if let block = self.touchBlock {
block(<non-nil-value>, touches, event)
} else {
super.touchesEnded(touches, with: event)
}
Но, если вы также хотите передать значение nil, определите свой блок как:
// Установить ELControl
для просмотра optional
с ?
меткой
var touchBlock: ((_ view: ELControl?, _ touches: UIEvent, _ event: UIEvent) -> Void?)?
и вызова:
if let block = self.touchBlock {
block(nil, touches, event)
} else {
super.touchesEnded(touches, with: event)
}