Was macht Swift-FocusEngine-Agent-Skill?
KI-Agenten-Fähigkeit für Claude Code, Copilot, Cursor, Codex und Gemini – korrektes Fokus-Management für tvOS, iOS, macOS, visionOS und watchOS
Übersicht
Diese Fähigkeit ermöglicht es KI-Assistenten, Entwickler bei der Implementierung des SwiftUI FocusEngine zu unterstützen. Der Fokus bestimmt, welches UI-Element aktuell Eingaben (z. B. Tastatur, Siri Remote, Maus oder Touch) empfängt. Eine korrekte Fokussteuerung ist entscheidend für die Benutzererfahrung, insbesondere auf Plattformen mit begrenzten Eingabemöglichkeiten.
Unterstützte Plattformen
- tvOS – Fokus ist ein primäres Interaktionsmittel
- iOS – Fokus für Tastatur- und VoiceOver-Navigation
- macOS – Fokus für Tastaturnavigation und Barrierefreiheit
- visionOS – Fokus basierend auf Blick- und Gestensteuerung
- watchOS – Eingeschränkter Fokus für Digital Crown und Tippen
Hauptfunktionen
- Programmatischer Fokus: Setzen des Fokus auf ein bestimmtes Element mittels
@FocusState - Fokusänderungen überwachen: Reagieren auf Fokusänderungen mit
.onChange(of:) - Benutzerdefinierte Fokusprioritäten: Definition von Fokusreihenfolgen in komplexen Layouts
- Plattformspezifische Anpassungen: Unterschiedliche Fokusverhalten pro Plattform
Codebeispiele
Programmatischer Fokus setzen
import SwiftUI
struct ContentView: View {
@FocusState private var isFocused: Bool
var body: some View {
Button("Fokussieren") {
isFocused = true
}
.focused($isFocused)
}
}
Fokusänderungen überwachen
struct MonitoringView: View {
@FocusState private var isFocused: Bool
var body: some View {
TextField("Name", text: .constant(""))
.focused($isFocused)
.onChange(of: isFocused) { newValue in
print("Fokus geändert: \(newValue)")
}
}
}
Best Practices
- Verwende
@FocusStatefür die deklarative Fokussteuerung - Vermeide häufige Fokusänderungen in kurzer Zeit, um Flackern zu verhindern
- Teste das Fokusverhalten auf allen Zielplattformen
- Für tvOS: Nutze das Focus-Engine-Protokoll für benutzerdefinierte Fokusziele
Fehlerbehebung
- Fokus flackert: Reduziere die Anzahl der Fokusänderungen oder verwende Animationen
- Fokus bleibt hängen: Überprüfe, ob
@FocusStatekorrekt initialisiert ist - Fokus wird nicht aktualisiert: Stelle sicher, dass das fokussierbare Element
focused(_:)verwendet
Lizenz
Dieses Skill ist unter der MIT-Lizenz lizenziert.