2016-12-26 6 views

Antwort

0

Wenn ich Ihre Frage richtig verstanden, fragen Sie, wie Sie erkennen, wenn Sie Schlüssel eingeben. Es gibt textField-Delegate-Methoden, um diese Aufgabe für Sie zu erledigen.

`// UITextField Delegates 
    func textFieldDidBeginEditing(_ textField: UITextField) { 
    } 
    func textFieldDidEndEditing(_ textField: UITextField) { 
    } 
    func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { 
     return true; 
    } 
    func textFieldShouldClear(_ textField: UITextField) -> Bool { 
     return true; 
    } 
    func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { 
     return true; 
    } 
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
     return true; 
    } 
    func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
     textField.resignFirstResponder(); 
     return true; 
    }` 

Update:

t nicht möglich, die Touch-Ereignisse direkt von der virtuellen Tastatur zu bekommen. Sie können jedoch ein UITextField verwenden, das Sie außerhalb des Bildschirms platzieren, sodass es nicht sichtbar ist, und den Befehl findFirstResponder aufrufen, um die Tastatur anzuzeigen. Dann könnten Sie die Delegate-Methode textView implementieren: sentChangeTextInRange: um benachrichtigt zu werden, wenn eine Taste gedrückt wird.

Eine sauberere Möglichkeit wäre, ein benutzerdefiniertes UIControl zu schreiben, das das UIKeyInput-Protokoll implementiert. Sie müssten nur Implementierungen für insertText :, deleteBackward und hasText bereitstellen (für diesen Fall können Sie einfach immer JA zurückgeben). Um die Tastatur sichtbar zu machen, müssten Sie erneut den Befehl "answerFirstResponder" für Ihr benutzerdefiniertes Steuerelement aufrufen.

Diese beiden Methoden haben gemeinsam, dass Sie nur benachrichtigt werden, wenn der Schlüssel freigegeben wird (so dass Text eingegeben wird), nicht wenn die Berührung tatsächlich beginnt. Wie gesagt, es ist nicht möglich, das tochesBegan-Event direkt zu bekommen. Wenn Sie das brauchen, müssten Sie wahrscheinlich Ihre eigene Bildschirmtastatur implementieren.

+0

Danke Sivajee, du hast es richtig verstanden, aber ich möchte kein Textfeld verwenden, also gibt es da noch irgendeinen anderen Weg zu erkennen, welche Taste gedrückt oder von der Tastatur losgelassen wird? –

0

einfach ein Ziel für die Bearbeitung Benachrichtigungsereignis wie folgt hinzu:

// Obj-C 
[textObject addTarget:self action:@selector(editingChanged:) forControlEvents:UIControlEventEditingChanged]; 

- (void)editingChanged:(id)object { 
    // Do your code here 
} 

// Swift 
textObject.addTarget(self, action: #selector(self.editingChanged(textObject:)), for: .editingChanged) 

func editingChanged(textObject: AnyObject) { 
    // Do your code here 
} 
Verwandte Themen