2015-09-13 8 views

risposta

6

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

2

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!

+0

Credo che chiede scopo principale-c lenguaje – garatu

-4

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; 

}

+0

Questa domanda è sull'utilizzo di visualizzazioni, non una vista di testo. – JAL

+0

Si dovrebbe portare una soluzione, piuttosto che il solo punteggio negativo della mia risposta, mi sono preso la briga di trovare una soluzione – garatu

+1

Questo non risponde alla domanda posta. Dovresti davvero leggere la domanda prima di dare una risposta cieca. – JAL