How to simulate a tap event in a UIWebView?

How to simulate a tap event in a UIWebView? I just need to process the mouse down + up the page scripts.

+4
source share
1 answer

I'm not sure if this is possible using public APIs. Using private APIs, this is possible, as indicated here synthesizing-touch-event-on-iphone . You won’t be able to use this appstore app though.

Another possible way to do this is to use javascript. Not sure if this is exactly what you wanted. This can be done using javascript, as mentioned here ,

function simulate(element, eventName) { var options = extend(defaultOptions, arguments[2] || {}); var oEvent, eventType = null; for (var name in eventMatchers) { if (eventMatchers[name].test(eventName)) { eventType = name; break; } } if (!eventType) throw new SyntaxError('Only HTMLEvents and MouseEvents interfaces are supported'); if (document.createEvent) { oEvent = document.createEvent(eventType); if (eventType == 'HTMLEvents') { oEvent.initEvent(eventName, options.bubbles, options.cancelable); } else { oEvent.initMouseEvent(eventName, options.bubbles, options.cancelable, document.defaultView, options.button, options.pointerX, options.pointerY, options.pointerX, options.pointerY, options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, options.button, element); } element.dispatchEvent(oEvent); } else { options.clientX = options.pointerX; options.clientY = options.pointerY; var evt = document.createEventObject(); oEvent = extend(evt, options); element.fireEvent('on' + eventName, oEvent); } return element; } function extend(destination, source) { for (var property in source) destination[property] = source[property]; return destination; } var eventMatchers = { 'HTMLEvents': /^(?:load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)$/, 'MouseEvents': /^(?:click|dblclick|mouse(?:down|up|over|move|out))$/ } var defaultOptions = { pointerX: 0, pointerY: 0, button: 0, ctrlKey: false, altKey: false, shiftKey: false, metaKey: false, bubbles: true, cancelable: true } 

and then use

 simulate(document.getElementById("btn"), "click"); 

You can try javascript by implementing the UIWebView's delegate webViewDidFinishLoad: method in the UIViewController and there you call [webview stringByEvaluatingJavaScriptFromString:@"methodName()"]; . Check if this helps.

+3
source

Source: https://habr.com/ru/post/1445400/


All Articles