Middle
Como funciona a cadeia de respondentes (responder chain) no iOS?
sobes.tech IA
Resposta da IA
A cadeia de respondedores é uma sequência de objetos UIResponder que lidam com eventos (toques, gestos, pressionamentos de teclas, eventos de edição de texto) no iOS.
Quando ocorre um evento, o sistema envia-o ao "primeiro respondedor" (por exemplo, um UIView no qual foi feito um toque). Se o primeiro respondedor não puder lidar com o evento, ele o passa ao longo da cadeia para o próximo objeto responsável.
Cadeia típica de respondedores:
- O
UIViewmais profundamente aninhado. - O seu
superview. - Depois, na hierarquia, o
superviewaté à vista raiz (root view). UIViewControllerque gere essa vista.UIWindow.UIApplication.AppDelegate.
Processo de tratamento:
- O sistema procura o
UIViewsob o ponto de contacto. EsteUIViewtorna-se o primeiro respondedor. - O primeiro respondedor chama o seu método para tratar o evento (por exemplo,
touchesBegan(_:with:)). - Se o método não tratar o evento (ou chamar explicitamente o método da superclasse), o evento é passado ao próximo respondedor na cadeia (
next). - A cadeia continua até que o evento seja tratado ou chegue ao final (normalmente
UIApplicationouAppDelegate, que geralmente o ignoram).
Exemplo de transmissão na cadeia:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
// Lógica personalizada de tratamento do toque
if !handledByThisView {
// Se este vista não tratou o evento, passá-lo adiante
super.touchesBegan(touches, with: event)
}
}
Pontos-chave:
- Os objetos capazes de tratar eventos herdam de
UIResponder. - Cada
UIRespondertem a propriedadenext, que devolve o próximo objeto na cadeia. - Se o método de tratamento de eventos em
UIRespondernão estiver implementado ou chamar o método da superclasse, o evento é passado por padrão para o próximo. UIRespondertambém desempenha um papel na gestão do foco e nos comandos de edição.