3D Touch é uma tecnologia de hardware da Apple que reconhece a força de pressão no display do iPhone, e sua substituição por software Haptic Touch, que funciona através da duração do toque. O 3D Touch usa sensores de pressão calibrados instalados sob a matriz da tela (Force Touch) e permite distinguir entre pressão leve (peek) e pressão profunda (pop). A partir do iOS 13, a Apple substituiu o 3D Touch pelo Haptic Touch — uma tecnologia que simula a pressão forçada através do Long Press com resposta tátil UIContextMenuInteraction.
Principais pontos
3D Touch é uma tecnologia de entrada de hardware que estreou no iPhone 6S (2015). Abaixo da superfície do display, sensores capacitivos medem a distância entre o vidro e a retroiluminação. Ao pressionar com o dedo, o vidro se deforma microscopicamente, os sensores detectam a quantidade de deformação e a convertem em um valor de força (gramas). O iOS distingue três níveis: toque leve (touch), pressão média (peek, ~200 g) e pressão profunda (pop, ~400 g).
Haptic Touch é uma substituição por software do 3D Touch, apresentada no iOS 13 (2019). Em vez de medir a pressão, o Haptic Touch usa o Long Press (segurar o dedo ~500 ms) para ativar as mesmas ações. A resposta tátil simula a sensação de um "clique", embora nenhuma pressão física ocorra. A Apple mudou para o Haptic Touch devido à complexidade e ao alto custo de fabricação das telas 3D Touch, especialmente na transição para painéis OLED com Face ID.
Histórico: o 3D Touch apareceu no iPhone 6S e permaneceu até o iPhone XS (2018). O iPhone XR (2018) foi o primeiro dispositivo com Haptic Touch em vez de 3D Touch. A partir do iPhone 11 (2019) e iOS 13, todos os novos iPhones usam Haptic Touch. O iPad nunca recebeu 3D Touch — apenas Haptic Touch com iPadOS 13. O Apple Watch usa a tecnologia Force Touch no display (diferente do 3D Touch do iPhone), que foi removida a partir do watchOS 7 e Series 6.
Force Touch é uma tecnologia de medição de força usada pela Apple no iPhone 6S–XS (3D Touch), trackpads do MacBook (2015+) e Apple Watch (Series 1–5). Baseia-se em sensores capacitivos localizados ao redor do perímetro do display. Ao pressionar, o vidro deforma micrômetros, os sensores registram a mudança na distância e calculam a força usando uma curva de calibração. O sistema leva em conta a temperatura ambiente (calibração a cada 24 horas) e a posição do dedo (o centro da tela é mais sensível).
Calibração é um aspecto crítico do 3D Touch. Cada iPhone é calibrado individualmente na fábrica. O iOS também realiza calibração dinâmica: na primeira pressão após a inicialização, o sistema solicita a força máxima do usuário e ajusta a sensibilidade. Os sensores têm precisão de ±10 gramas, faixa — de 0 a 500+ gramas. O desenvolvedor pode obter o valor da força através de UITouch.force (normalizado de 0.0 ao máximo) ou UITouch.maximumPossibleForce.
// Verificação de disponibilidade do 3D Touch e leitura da força de pressão
class ForceTouchViewController: UIViewController {
override func touchesMoved(_ touches: Set<UITouch>,
with event: UIEvent?) {
guard let touch = touches.first else { return }
// Verificação de suporte ao Force Touch no dispositivo
guard self.traitCollection.forceTouchCapability
== UIForceTouchCapability.available else {
// Dispositivo não suporta 3D Touch
return
}
// Leitura da força de pressão (0.0 — máx)
let force = touch.force // 0.0 ... maximumPossibleForce
let maxForce = touch.maximumPossibleForce
// Normalização para o intervalo 0.0–1.0 para visualização
let normalizedForce = force / maxForce
// Reação visual à força de pressão (escala do elemento)
forceView.transform = CGAffineTransform(scaleX: 1.0 + normalizedForce * 0.3,
y: 1.0 + normalizedForce * 0.3)
}
}Limitações: o 3D Touch funciona apenas com toque ativo (UITouch.phase == .began ou .moved). Após soltar, o valor da força é redefinido para zero. O valor máximo da força varia entre dispositivos: iPhone 6S — 6.6666, iPhone 7/X — até 20.0 (devido a calibração diferente). Não use a força para ações críticas — o usuário pode não saber com quanta força pressionar. Sempre forneça uma alternativa através do Haptic Touch (Long Press).
Peek and Pop é o padrão UX original da Apple apresentado com o 3D Touch no iPhone 6S. Peek é uma pressão leve (força ~0.5–1.0) que mostra uma prévia do conteúdo (e-mail, link, foto) em um cartão de prévia. Pop é uma pressão mais profunda (força ~2.0+) que abre o conteúdo em tela cheia. Peek suportava ações na parte inferior (compartilhar, copiar, responder), acessíveis deslizando para cima no cartão de prévia.
Implementação do Peek and Pop no UIKit incluía três componentes: UIViewControllerPreviewingDelegate (um protocolo com métodos previewingContext(_:viewControllerForLocation:) e previewingContext(_:commit:)), UIPreviewAction (ações na parte inferior) e registro através de registerForPreviewing(with:sourceView:). O desenvolvedor especificava qual ViewController mostrar no Peek e como abri-lo no Pop. O sistema adicionava automaticamente animação de paralaxe e desfoque de fundo.
| Gesto | Força (norm.) | Ação | Efeito visual |
|---|---|---|---|
| Toque (Touch) | 0.0–0.3 | Interação normal | Destaque do elemento |
| Pressão leve (Peek) | 0.5–1.0 | Prévia do conteúdo | Cartão com desfoque de fundo |
| Pressão profunda (Pop) | 2.0+ | Abertura em tela cheia | Animação de expansão do cartão |
| Deslizar para cima | — | Ações (compartilhar, copiar) | Grupo UIPreviewAction |
Transição para UIContextMenuInteraction (iOS 13): a Apple substituiu Peek and Pop por menus contextuais através do UIContextMenuInteraction. A nova API é mais simples: não requer UIViewControllerPreviewingDelegate, suporta menus hierárquicos (submenus), ícones SF Symbols e funciona de forma idêntica com 3D Touch e Haptic Touch. Migração: registerForPreviewing obsoleto desde o iOS 13. Substitua por UIContextMenuConfiguration, que se adapta automaticamente às capacidades do dispositivo.
UIContextMenuInteraction é uma API moderna do iOS para menus contextuais, disponível desde o iOS 13. É adicionada a qualquer UIView através de addInteraction(_:). O delegado UIContextMenuInteractionDelegate fornece a configuração do menu: UIContextMenuConfiguration com um identificador, previewProvider (opcional, para prévia) e actionProvider (matriz de UIAction ou UIMenu). O menu contextual é ativado por 3D Touch (se disponível) ou Haptic Touch (Long Press em outros dispositivos).
// UIContextMenuInteraction com menu hierárquico
class ContextMenuViewController: UIViewController,
UIContextMenuInteractionDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let interaction = UIContextMenuInteraction(delegate: self)
contextMenuView.addInteraction(interaction)
}
func contextMenuInteraction(_ interaction: UIContextMenuInteraction,
configurationForMenuAtLocation location: CGPoint) -> UIContextMenuConfiguration? {
return UIContextMenuConfiguration(identifier: nil,
previewProvider: { PreviewViewController() }) { _ in
let share = UIAction(title: "Compartilhar",
image: UIImage(systemName: "square.and.arrow.up"),
handler: { _ in self.shareContent() })
let edit = UIAction(title: "Editar",
image: UIImage(systemName: "pencil"),
handler: { _ in self.editContent() })
let delete = UIAction(title: "Excluir",
image: UIImage(systemName: "trash"),
attributes: .destructive,
handler: { _ in self.deleteContent() })
return UIMenu(title: "Ações", children: [share, edit, delete])
}
}
}UIContextMenuConfiguration suporta previewProvider — um controlador exibido como prévia. Se previewProvider for nil, o menu contextual é mostrado sem prévia. UIContextMenuContentPreviewProvider é usado para personalizar o tamanho e a aparência da prévia. Os menus contextuais recebem automaticamente resposta tátil (Haptic Touch Engine) e animação de aparecimento (escala + desvanecimento).
Haptic Touch e 3D Touch são tecnologias diferentes que levam ao mesmo resultado. 3D Touch é hardware (sensores de pressão no display), Haptic Touch é software (Long Press + Taptic Engine para simulação tátil). O 3D Touch requer custos de fabricação (camada adicional de sensores), aumenta a espessura da tela e a complexidade do reparo. O Haptic Touch é mais barato, mais simples de fabricar e está disponível em todos os dispositivos modernos (iPhone SE 2020, iPhone 11–16, iPad, iPod touch).
| Parâmetro | 3D Touch | Haptic Touch |
|---|---|---|
| Princípio | Medição de pressão (gramas) | Medição de tempo (milissegundos) |
| Disponibilidade | iPhone 6S–XS (limitado) | iPhone XR+, iPad, iPod touch |
| Velocidade | Instantânea (~100 ms) | Com atraso (~500 ms) |
| Níveis de pressão | 2 (peek + pop) | 1 (menu contextual) |
| Resposta tátil | Taptic Engine (simulação de clique) | Taptic Engine (simulação de clique) |
| App Store | Quick Actions no ícone | Quick Actions no ícone |
| Calibração | Autocalibração conforme força do usuário | Não necessária |
| Reparabilidade | Complexa (sensores no display) | Padrão |
Impacto na UX: a velocidade do 3D Touch é maior — o usuário obtém o menu contextual imediatamente ao pressionar com força. O Haptic Touch requer uma pausa de 500 ms, o que parece mais lento. No entanto, a Apple compensa com resposta tátil e animação visual. Usuários que mudaram do 3D Touch para o Haptic Touch frequentemente notam a diferença de velocidade. Para desenvolvedores, a migração é transparente: o UIContextMenuInteraction funciona de forma idêntica em ambas as tecnologias.
Quick Actions — um menu contextual no ícone do aplicativo na tela inicial. A pressão forte (3D Touch) ou Long Press (Haptic Touch) no ícone mostra até 4 ações rápidas: "Nova mensagem" (Messages), "Tirar foto" (Camera), "Buscar" (Safari). Implementado através da chave Info.plist UIApplicationShortcutItems ou através do delegado UIApplicationShortcutItem. As Quick Actions estão disponíveis em todos os dispositivos com iOS 13+ (Haptic Touch) ou 3D Touch.
Trackpad do teclado — pressionar com força o teclado do iOS o alterna para o modo trackpad: as teclas ficam inativas e o movimento do dedo move o cursor. O 3D Touch ativava o trackpad com uma pressão forte em qualquer lugar do teclado. O Haptic Touch ativa o trackpad com uma pressão prolongada na barra de espaço. O modo trackpad tornou-se um dos usos mais populares do 3D Touch — os usuários apreciam o posicionamento preciso do cursor ao editar texto.
Prévia de links e fotos — pressionar com força um link no Safari mostra uma prévia da página (peek) sem navegar. Da mesma forma: pressionar uma foto no Messages abre uma versão ampliada. Deslizar para cima no modo peek mostra ações: "Abrir", "Adicionar à lista de leitura", "Copiar". Todos esses cenários funcionam através do UIContextMenuInteraction nas versões modernas do iOS.
Aplicativos de desenho e criativos — no Procreate, Photoshop e outros aplicativos de desenho, a força de pressão do 3D Touch controla a espessura do pincel, opacidade ou saturação de cor. Os aplicativos leem UITouch.force (0.0–1.0) e convertem em parâmetros da ferramenta. No entanto, para desenho, o Apple Pencil no iPad fornece controle de pressão mais preciso (com suporte a inclinação e azimute), então o 3D Touch em aplicativos criativos no iPhone é menos demandado.
Perguntas frequentes
3D Touch é uma tecnologia de hardware que mede a força de pressão através de sensores capacitivos no display (iPhone 6S–XS). Haptic Touch é uma simulação por software que usa Long Press e resposta tátil do Taptic Engine. O 3D Touch é mais rápido (100 ms vs 500 ms) e suporta dois níveis de força (peek + pop). O Haptic Touch está disponível em todos os dispositivos com iOS 13+, incluindo iPhone XR, todos os modelos iPhone 11–16, iPad e iPod touch.
No código, use traitCollection.forceTouchCapability. O valor .available significa que o 3D Touch é suportado, .unavailable significa que não, .unknown significa que ainda não foi determinado (aguarde traitCollectionDidChange). Em dispositivos com Haptic Touch, forceTouchCapability retorna .unavailable, pois o Haptic Touch não usa sensores de força de hardware. Para usuários: verifique em Ajustes → Acessibilidade → Toque → 3D Touch (apenas em iPhones antigos).
A Apple substituiu 3D Touch por Haptic Touch por vários motivos: alto custo de produção de telas com sensores de pressão, complexidade de reparo (sensores integrados ao display), conhecimento limitado do usuário (muitos não conheciam o recurso) e a transição para telas OLED com Face ID, que são mais difíceis de calibrar para 3D Touch. O Haptic Touch é mais barato, mais simples e está disponível em um número maior de dispositivos.
3D Touch é suportado por: iPhone 6S, 6S Plus, 7, 7 Plus, 8, 8 Plus, X, XS, XS Max. O iPhone XR não tem 3D Touch (primeiro com Haptic Touch). Todos os modelos iPhone 11, 12, 13, 14, 15, 16 e SE (2ª e 3ª geração) usam Haptic Touch. O iPad nunca teve 3D Touch. Em dispositivos com 3D Touch, as configurações de sensibilidade também estão disponíveis (Ajustes → Acessibilidade → Toque → 3D Touch).
Sim, o iOS emula automaticamente o 3D Touch através do Haptic Touch em dispositivos sem suporte de hardware. A API UIContextMenuInteraction funciona de forma idêntica em todos os dispositivos — o próprio sistema seleciona o gatilho (3D Touch ou Long Press). Isso é transparente para seu código: o menu contextual aparece em todos os dispositivos com iOS 13+. Você não precisa escrever lógica separada para 3D Touch e Haptic Touch — use UIContextMenuConfiguration.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também