Ci sono risorse per questo quando si utilizza UITextView. Come faccio a registrarmi per l'evento stampa del pulsante chiave Done
? La tastiera appare quando l'utente mette a fuoco un modulo all'interno della webview.Pulsante "done" premuto pulsante evento per UIWebView e WKWebView
risposta
L'idea principale è utilizzare l'iniezione Javascript per ottenere ciò che si desidera. È possibile provare a catturare l'evento DOM chiamato onfocusout
(fare riferimento a http://www.w3schools.com/jsref/event_onfocusout.asp per ulteriori dettagli).
Di seguito è riportato l'esempio di come è possibile farlo per UIWebView. WKWebView può essere gestito in modo simile.
chiamata questo per iniettare un po 'di codice Javascript dopo la prima volta che il vostro WebView caricato
[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('youTextFieldID').addEventListener('onfocusout', function() {"
@"var frame = document.createElement('iframe');"
@"frame.src = 'doneEditing://';"
@"document.body.appendChild(frame);"
@"setTimeout(function() { document.body.removeChild(frame); }, 0);"
@"}, false);"];
Scrivi il tuo metodo di UIWebView delegato come questo
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if ([request.URL.scheme isEqualToString:@"doneEditing"]) {
// Call you event handler here
[self doneButtonTouchEventHandler]
return NO;
}
return YES;
}
Buona fortuna
La chiave è quello di aggiungere ascoltatori di eventi quando la pagina web viene caricata. Presumo che tu voglia conoscere l'evento blur
di un campo di testo.
Ecco un esempio di base di lavoro:
<html>
<head>
<script>
function initPage() {
document.addEventListener('focusin', handleFocusIn);
document.addEventListener('focusout', handleFocusOut);
}
function handleFocusIn(e) {
alert('In');
}
function handleFocusOut(e) {
alert('Out');
}
</script>
</head>
<body onload="initPage()">
<form>
<input type="text" name="username">
</form>
</body>
</html>
Mi auguro che aiuta, per favore fatemelo sapere il contrario!
Buona fortuna!
se si aggiunge delegato (UITextViewDelegate), è necessario aggiungere il metodo viewWillAppear e al suo interno [self.view endEditing: YES];
-(void) viewWillAppear: (BOOL) animated {
[self.view endEditing:YES];
}
inoltre è possibile farlo con il metodo TextView shouldChangeTextInRange
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
return YES;
}
Questa domanda è sull'utilizzo di visualizzazioni, non una vista di testo. – JAL
Si dovrebbe portare una soluzione, piuttosto che il solo punteggio negativo della mia risposta, mi sono preso la briga di trovare una soluzione – garatu
Questo non risponde alla domanda posta. Dovresti davvero leggere la domanda prima di dare una risposta cieca. – JAL
Credo che chiede scopo principale-c lenguaje – garatu