Agregar UIButton en una UIWebView

Tengo una UIWebView que ya está llena de mi request (loadRequest).

Me gustaría agregar un UIButton en él. Es fácil escribir este código simple:

[self.myWebView loadRequest:request]; [self.myWebView addSubview:myButton]; 

Sin embargo, parece que el button UIB no se desplazará con el contenido de UIWebView. Permanece fijo como una capa en la parte superior de UIWebView. Entonces, cuando el usuario se desplaza, el button UIB se desincroniza con el contenido.

Algunas ideas ?

Puede inyectar marcas de html como <a href='yTag01'> <button> Mi button </ button> </a> en el contenido de su UIWebview utilizando el método stringByEvaluatingJavaScriptFromString.

Para capturar el evento de clic y evitar que vuelva a cargar el contenido de su vista web, use este delegado:

 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { if(navigationType==UIWebViewNavigationTypeLinkClicked && [[request.URL absoluteString] isEqualToString: @"yourTag01"]) { //your custom action code goes here return NO; } return YES; } 

No puedes hacer esto de una manera sana y directa. Es posible que desee reevaluar lo que está haciendo.

Continuando con el comentario de Axiixc, aquí hay un código que puede usar para colocar un button en la parte inferior de la vista web. Al colocar el código de posicionamiento en las subvenciones de layout, puede manejar la rotation correctamente.

 - (void)webViewDidFinishLoad:(UIWebView *)webview{ if (!_button){ UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; [button setTitle:@"Move All Blue Cards to Known" forState:UIControlStateNormal]; [button setBackgroundImage:[UIImage imageNamed:@"signin-button-blue-color"] forState:UIControlStateNormal]; [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; button.titleLabel.font = [UIFont boldSystemFontOfSize:16.0]; [_webview.scrollView addSubview:button]; _button = button; } [self setNeedsLayout]; [self layoutIfNeeded]; } - (void)layoutSubviews{ [super layoutSubviews]; float y = 0; CGRect originalRect = _webview.frame; _webview.frame = CGRectMake(0, 0, originalRect.size.width, 1); // Trick the webview into giving the right size for content CGSize contentSize = _webview.scrollView.contentSize; _webview.frame = originalRect; if (contentSize.height < _webview.frame.size.height){ // This keeps the button at the bottom of the webview, or at the bottom of the content, as needed. y = _webview.frame.size.height - 64; // 44 tall + 20 offset from the bottom } else { y = contentSize.height + 20; } _button.frame = CGRectMake(20, y, self.frame.size.width-40, 44); // 40/2 = 20 px on each side contentSize.height = CGRectGetMaxY(_button.frame)+20; _webview.scrollView.contentSize = contentSize; } 

En iOS 5, puedes acceder directamente a la vista de desplazamiento de UIWebView, que es donde realmente deseas agregar tu button, https://developer.apple.com/documentation/uikit/uiwebview/1617955-scrollview . Pero tiendo a estar de acuerdo con los comentaristas anteriores, probablemente deberías considerar un enfoque diferente, ya que mezclar UIKit con una vista web no está realmente destinado a funcionar cómo describes.