iOSã13ããŒãžã§ã³ã«æŽæ°ãããåŸãé·æŒãã¯æ©èœãããã³ã³ããã¹ãã¡ãã¥ãŒã€ãã³ãã¯ããªã¬ãŒãããŸããã
doubleClickZoomãèµ·åããããã®ããã«ã¿ããã¯iOS13ã§ãæ©èœããŸãããã³ã³ããã¹ãã¡ãã¥ãŒã®ä¿®æ£ã¯è§£æ±ºããããã«ã¯ããã«éèŠã§ãã
ç§ã¯åãåé¡ã確èªããŸãã æåã®èª¿æ»ã®åŸãiOS 13Safariã¯ã¿ããã€ãã³ããé©åã«çºçãããªãããã§ãã
iOS Safariã§ã®ãã³ã°ã¿ããã¯ãLeafletã©ã€ãã©ãªã«ã€ãã³ããéä¿¡ãããiOSèªäœã«ãã£ãŠåŠçãããŸãã
ããã«ã¯ãªãã¯ãããšã次ã®ã€ãã³ããçºçããŸãïŒmouseoverãmousemoveãmousedownãmouseupãclickãããã«ããããªãŒãã¬ããã®ã€ãã³ãã¯ãªãã¯ãçºçããŸãã
ã¢ãã€ã«SafariiOS 13ã®æ·±å»ãªåé¡ã®ããã«æããŸãããã¢ãã€ã«Safariããã¹ã¯ãããSafariãšéåžžã«ãã䌌ããã®ã«ããããã«äœãé¢ä¿ããããšæããŸãã ã¿ããã€ãã³ãããªãŒãã¬ããã«é©åã«éä¿¡ãããªãéããä¿®æ£ããããšã¯ããŸããããŸããã
ãããAppleã«å ±åãã人ã¯ããŸããïŒ
å é±ãAppleãµããŒãã«ã¬ããŒããéä¿¡ããŸãã ãŸã çãã¯ãããŸããã
ããå°ãæ
å ±ããããŸãã ãããdivã«ã¯ãªãã¯ãã³ãã©ãŒãè¿œå ãããºãŒã ã³ã³ãããŒã«ãæå¹ã«ãªã£ãŠããå Žåãé·æŒãã¯ã³ã³ããã¹ãã¡ãã¥ãŒã®ã³ããŒ/貌ãä»ããšããŠæ©èœãå§ããŸãã
ãã®ããã«
<div id="mapid" onclick="javascript:void(0)"/>
-webkit-user-select: none;
-webkit-touch-callout: none;
ãŸãã圹ã«ç«ãããã³ããŒ/貌ãä»ãã¡ãã¥ãŒãç¡å¹ã«ããã ãã§ã
å€åããã¯èª°ãã®ããã«åœ¹ç«ã€ã§ãããã
é·æŒãã®äžæçãªè§£æ±ºçãšããŠïŒ
ãã®ã©ã€ãã©ãªãè¿œå ããhttps://www.cssscript.com/handle-long-press-tap-event-in-javascript-long-press-js/
ãããŠcssã§-webkit-user-select: none;
-webkit-touch-callout: none;
é·æŒãã€ãã³ãã®ãªã¹ããŒãè¿œå ãããããã ãããŠãããã§ã€ãã³ããã³ãã©ãŒã§åº§æšããªãŒãã¬ãã座æšã«å€æããŸãã
ã©ã€ãã©ãªã¯æ©èœããŸããïŒ ãããŸã§ã®ãšããããœãŒã¹ã³ãŒãã確èªããŸããããã©ã€ãã©ãªã¯ãšã«ããSafariã«éä¿¡ãããªãã¿ããã€ãã³ãããªãã¹ã³ããŸãã ã¡ãã£ãšèå³ããããã ãã©ã
ã¯ããåäœããŸãã å°ãªããšãé·æŒãã®å Žåã
iOS13ãšiPadOS13ã§ç¢ºèªããŸãã
çŽ æŽããããã³ãthx
ããã¯ãç§ãã¡ã䜿çšããæçµçãªè§£æ±ºçã§ãã ãã³ã°ã¿ãããæ€åºãããcontextmenuãMenuEventããšãã¥ã¬ãŒãããŸãã ãããJSã³ãŒãã«å ¥ããã ãã§ãããŸãããã¯ãã§ãã
泚ïŒãªã¹ããŒãå€ãããªãããã«ãiOS13ãŠãŒã¶ãŒã®ã¿ã®å®è¡ãå¶éããããšããå§ãããŸã
// Copied and modified from https://github.com/john-doherty/long-press-event/
import rs from 'rootScope'
import $ from '$'
if( rs.platform === 'ios' && / OS 13_/.test( navigator.userAgent ) ) {
// This is our main map el
const mapEl = $('#map-container')
// This class adds -webkit-user-select: none; -webkit-touch-callout: none;
// to the BODY el
document.body.classList.add('ios13')
let timer = null;
const fireLongPressEvent = originalEvent => {
clearLongPressTimer();
const el = originalEvent.target
, x = originalEvent.touches[0].clientX
, y = originalEvent.touches[0].clientY
// This will emulate contextmenu mouse event
const event = new MouseEvent('contextmenu', {
bubbles: true,
cancelable: true,
clientX: x,
clientY: y
})
// fire the long-press event
const suppressClickEvent = el.dispatchEvent.call(el,event);
if (suppressClickEvent) {
// temporarily intercept and clear the next click
mapEl.addEventListener('touchend', function clearMouseUp(e) {
mapEl.removeEventListener('touchend', clearMouseUp, true);
cancelEvent(e);
}, true);
}
}
const startLongPressTimer = e => {
clearLongPressTimer(e);
timer = setTimeout( fireLongPressEvent.bind(null,e), 1000 );
}
const clearLongPressTimer = () => {
if(timer) {
clearTimeout(timer);
timer = null;
}
}
const cancelEvent = e => {
e.stopImmediatePropagation();
e.preventDefault();
e.stopPropagation();
}
// hook events that clear a pending long press event
mapEl.addEventListener('touchcancel', clearLongPressTimer, true);
mapEl.addEventListener('touchend', clearLongPressTimer, true);
mapEl.addEventListener('touchmove', clearLongPressTimer, true);
// hook events that can trigger a long press event
mapEl.addEventListener('touchstart', startLongPressTimer, true); // <- start
}
åæ§ã®åé¡ã調æ»ããŠãããšãã«ããã®ã¹ã¬ããã«åºããããŸããã ç§ãçºèŠããåŒã³åºãpreventDefault
ã«touchstart
ããªãããã€ãã®ããã«ã¿ããã€ãã³ããåãåãããã以åã®ããã«ããã«ã¿ããããã§ãã¯ããããšãã§ããŸãã
ããã¯ãã¢ãã€ã«SafariããããŒã€ãã³ãã®ã·ãã¥ã¬ãŒã·ã§ã³æ¹æ³ãå€æŽãããšããäºå®ã«åž°çãããšæããŸãïŒã¡ãã¥ãŒãªã©ãéãããã«ãããŒã€ãã³ãã®ã¿ã«äŸåããWebãµã€ããæ©èœãããããïŒ
åæ§ã®åé¡ã調æ»ããŠãããšãã«ããã®ã¹ã¬ããã«åºããããŸããã ç§ãçºèŠããåŒã³åºã
preventDefault
ã«touchstart
ããªãããã€ãã®ããã«ã¿ããã€ãã³ããåãåãããã以åã®ããã«ããã«ã¿ããããã§ãã¯ããããšãã§ããŸããããã¯ãã¢ãã€ã«SafariããããŒã€ãã³ãã®ã·ãã¥ã¬ãŒã·ã§ã³æ¹æ³ãå€æŽãããšããäºå®ã«åž°çãããšæããŸãïŒã¡ãã¥ãŒãªã©ãéãããã«ãããŒã€ãã³ãã®ã¿ã«äŸåããWebãµã€ããæ©èœãããããïŒ
ãããŸã§ã®ãšãããç§ã«ãšã£ãŠã¯éã«æ©èœããŸãããã³ã°ã¿ãããé€ããã¹ãŠã®ã¯ãªãã¯ãæå¶ããŸãã èªåã«åã£ãã³ãŒããå ±æã§ããŸããïŒ
ç³ãèš³ãããŸããããããã«ã¿ãããæ€åºããããã«çã®ã¿ããã€ãã³ãã䜿çšããŠãããšæ³å®ããŠããŸããã ã¯ãªãã¯/ããŠã¹ã€ãã³ãã«äŸåããŠããå Žåã¯ãã¿ããã¹ã¿ãŒãã®preventDefault
ã§ããããé²ãããšãã§ããŸãã
ãããã«ããã13.1ã§ä¿®æ£ãããiOSã®ãã°ã®ããã§ãã
@felixhagelohãã®ãã¢ãå®è¡ããŠãã
http://aratcliffe.github.io/Leaflet.contextmenu/examples/index.html
ããããåé¡ãä¿®æ£ãããããã«ã¯èŠããŸããïŒ ç§ãèŠéããŠãããã®ã¯ãããŸããïŒ
ç§ãã¡ã¯é·æŒãã®ã€ãã³ãã«å€§ããäŸåããŠããã®ã§ãç§ãã¡ã«ãšã£ãŠæ¬åœã«é倧ãªåé¡ã§ããã©ããªå©ãã§ããããããã§ãã
ããã¯ã WebKitã®ãã°ïŒ202143ããåç §ãããŠããåé¡ã§ãã WebKitããŒã ïŒãã®å Žåã¯ç§ïŒã調æ»äžã§ãã
ããã¯ã WebKitã®ãã°ïŒ202143ããåç §ãããŠããåé¡ã§ãã WebKitããŒã ïŒãã®å Žåã¯ç§ïŒã調æ»äžã§ãã
ããªãããã®åé¡ã«é£ã³èŸŒãã§ããããšããšãŠãããããæããŸãã Webéçºè ãšããŠãã¿ããã€ãã³ããçºçããå Žåã«iOS13.xã®SafariãiOS12.xãŸãã¯Androidã®Chromeãšåãããã«åäœããããšãå¬ããæããŸãã
ããªããããã«ããããšãå¬ããæããŸãã
@ majid701æ··ä¹±ãèµ·ãããŠããŸã£ãããããããªããã 13.0ã§èŠãåé¡ã¯æ¬¡ã®ãšããã§ãã
ããã«ã¿ããïŒãã°ããïŒ->ã·ã³ã°ã«ã¿ããã¹ã¿ãŒããšã¿ãããšã³ããèµ·åãããŸããã
13.1以éã2ã€ã®ã¿ããã¹ã¿ãŒãã€ãã³ããšã¿ãããšã³ãã€ãã³ããåã³æ£ããåä¿¡ããŠããŸãã ç§ãç¶æããŠããã¢ããªã¯ãçã®ã¿ããã€ãã³ãã䜿çšããŠããã«ã¿ãããæ€åºããããããã®åºå®ããã«ã¿ãããºãŒã ã䜿çšããŸãã ç§ã¯ãããããªãã«ãåœãŠã¯ãŸããšééã£ãŠæã£ãŠããŸããã
ifïŒrs.platform === 'ios' && / OS 13 _ /ãtestïŒnavigator.userAgentïŒïŒ
ããã¯ããŠãŒã¶ãŒãšãŒãžã§ã³ãæååã¯ããã¹ã¯ãããäžã®Safariãšåãã§ãããšiOSãã¢ããã¿ã€ãºããŸããiPadOSã®ä»äºã«è¡ããããŠããªãããšã泚æ@ilblogã
_ïŒWebKitãã°ããåæçš¿ããŠããã®ãã°ã«Ccãã人ã ãããããèŠãããšãã§ããããã«ããŸããïŒ_
contextmenu
Leafletã€ãã³ãã¯ããªã¬ãŒãããŸãããããã¯ãLeafletã³ãŒããpointerdown
touchstart
ã€ãã³ããš_onDown
ã¡ãœããã«ãã®ãã§ãã¯if (!e.touches) { return; }
ããã PointerEvent
ã€ãã³ãã¯TouchEvent
ãšåãã§ã¯ãªããããåžžã«æ©æã®ãªã¿ãŒã³ã«ã€ãªãããŸãã touches
ããããã£ã¯ãããŸããã
ãããã£ãŠããªãŒãã¬ããcontextmenu
ã€ãã³ããããªã¬ãŒãããªãããšã¯ãç¹ã«ãªãŒãã¬ããã®åé¡ã§ãã
å®éããã®ã³ãŒãã¯æ¬¡ã®çç±ã«ããããã€ã³ã¿ãŒã€ãã³ãã§ã¯å®è¡ãããŸããã
if (Browser.touch && !Browser.pointer) {
Map.addInitHook('addHandler', 'tap', Tap);
}
iOS 13ã§ã¯ã Browser.touch
ãšBrowser.pointer
äž¡æ¹ãtrueã§ãããããããã±ãŒãžå
šäœãåæåãããŸããã
å é±ãAppleãµããŒãã«ã¬ããŒããéä¿¡ããŸãã ãŸã çãã¯ãããŸããã
@ ginger-777ãã°çªå·/ãã£ãŒãããã¯IDã¯ãããŸããïŒ äžè¬çã«ãWebKitéçºè ã®æ³šæãåŒãæè¯ã®æ¹æ³ã¯ãbugs.webkit.orgã§çŽæ¥ãã°ãå ±åããããšã§ãã
@graoutsã¯ããããªãã®æåŸã®ã³ã¡ã³ããèªãã åŸãç§ãããã«æ°ã¥ããŸããã ãããã Settings -> General -> Experimental Features
ããã®ãã€ã³ã¿ãŒã€ãã³ãã®ç¡å¹åããã¹ããããšããããã®ãã¢Webãµã€ãã§æ©èœããããã«èŠããŸããã
http://aratcliffe.github.io/Leaflet.contextmenu/examples/index.html
ããããããã¯ç§ã®ã¢ããªå ã§ã¯æ©èœããŸããã Webviewå ã«ãªãŒãã¬ãããèªã¿èŸŒãã§ããŸãã
ããã«ã¿ããããŠãºãŒã ããããšã«é¢ããŠã¯ãããã¯Leafletã®åé¡ã§ããããŸãã DomEvent.DoubleTap
ãã®ã³ãŒããæ€èšããŠãã ããïŒ
function onTouchStart(e) {
var count;
if (Browser.pointer) {
if ((!Browser.edge) || e.pointerType === 'mouse') { return; }
count = _pointersCount;
} else {
count = e.touches.length;
}
if (count > 1) { return; }
var now = Date.now(),
delta = now - (last || now);
touch = e.touches ? e.touches[0] : e;
doubleTap = (delta > 0 && delta <= delay);
last = now;
}
ãã©ãŠã¶ããã€ã³ã¿ã€ãã³ãããµããŒãããŠããŠããããEdgeã§ãªãå Žåãé¢æ°ã¯æ©æã«çµäºããŸãã ããã¯ãiOS13äžã®SafariãŸãã¯WebKitããŒã¹ã®ãã©ãŠã¶ã®å Žåã§ãã
ç§ã®ç¥ãéããããã§å ±åãããŠããäž¡æ¹ã®åé¡ã¯ãã¿ããã€ãã³ããšãã€ã³ã¿ãŒã€ãã³ãïŒé·æŒããšcontextmenu
ã€ãã³ãïŒã®äž¡æ¹ããµããŒããããã©ãŠã¶ãŒããŸãã¯ãã€ã³ã¿ãŒã€ãã³ãããµããŒãããŠãããMicrosoftEdgeã§ã¯ãªããã©ãŠã¶ãŒã®æºåãã§ããŠããªããªãŒãã¬ããã§ãã ïŒããã«ã¿ãããšdblclick
ã€ãã³ãïŒã
ãã®æ®µéã§ä¿®æ£ãããã®ããªããããWebKitã®ãã°ãéããŸããã
@graoutsã¯ããããªãã®æåŸã®ã³ã¡ã³ããèªãã åŸãç§ãããã«æ°ã¥ããŸããã ãããã
Settings -> General -> Experimental Features
ããã®ãã€ã³ã¿ãŒã€ãã³ãã®ç¡å¹åããã¹ããããšããããã®ãã¢Webãµã€ãã§æ©èœããããã«èŠããŸããã
http://aratcliffe.github.io/Leaflet.contextmenu/examples/index.htmlããããããã¯ç§ã®ã¢ããªå ã§ã¯æ©èœããŸããã Webviewå ã«ãªãŒãã¬ãããèªã¿èŸŒãã§ããŸãã
ã¯ã@ majid701 ããã®èšå®ã¯Safariã«ã®ã¿é©çšããã WKWebView
ãiOSã«WebKitãåã蟌ãä»ã®æ¹æ³ã«ã¯é©çšãããªããšæããŸãã Safariã¢ããªã®å€éšã§ãã€ã³ã¿ãŒã€ãã³ããç¡å¹ã«ããæ¹æ³ãããããŸããã
解決çã¯ãiOS 13 SafariããpinterTypeããã©ãŠã¶ãšããŠæ€åºããã¿ããã€ãã³ããæ£ããåŠçããªãLeafletã©ã€ãã©ãªãä¿®æ£ããããšã ãšæããŸãã
ãã®ä»¶ã«é¢ããŠããªãã®åªåãšå€ãã®å©ããããããšã@graouts ã
ã¢ãã€ã«ããã€ã¹ã®ããã«ã¿ãããåãã³ãŒãè¡ãžã®ãããé©çšã«é¢ããPRãé²è¡äžã§ãhttps://github.com/Leaflet/Leaflet/pull/6815ãªã®ã§ããã®åé¡ã«ã€ããŠã説æããããã«äŸé ŒããŸããã
ifïŒrs.platform === 'ios' && / OS 13 _ /ãtestïŒnavigator.userAgentïŒïŒ
ããã¯ããŠãŒã¶ãŒãšãŒãžã§ã³ãæååã¯ããã¹ã¯ãããäžã®Safariãšåãã§ãããšiOSãã¢ããã¿ã€ãºããŸããiPadOSã®ä»äºã«è¡ããããŠããªãããšã泚æ@ilblogã
éçºè ãmacOSãšiPadãåºå¥ã§ããªãå Žåãå¥ã®äžé£ã®åé¡ãçºçããå¯èœæ§ããããããããã¯èå³æ·±ãããšã§ãã ããã¯ãã®ãªãŒãã¬ããã®ãã°ãšã¯é¢ä¿ãããŸããããAppleã察åŠããå¿ èŠããããšæããŸãã
解決æžã¿
Appleããã®è²ŽéãªæèŠã®ãããã§ãå°ãªããšãiPhoneã§iOS13ã®åé¡ãä¿®æ£ããããšãã§ããŸããã iOS13äžã®iPadã«ã¯macOSãšåããŠãŒã¶ãŒãšãŒãžã§ã³ãæååããããããiPadã§åé¡ãä¿®æ£ã§ããŸããã§ããã
src/core/Browser.js
ããã«å€æŽããã ãã§ãã
// 'false' for all iOS devices, that (as of version iOS13 support both, touch and pointer events)
// Unfortunately as of iOS13 it is not possible to distinguish iPad from OS X by user agent string
export var pointer = !!(window.PointerEvent || msPointer) && !userAgentContains('iphone');
ä¿®æ£ã䌎ããã«ãªã¯ãšã¹ãã¯ãã¡ã
ifïŒrs.platform === 'ios' && / OS 13 _ /ãtestïŒnavigator.userAgentïŒïŒ
ããã¯ããŠãŒã¶ãŒãšãŒãžã§ã³ãæååã¯ããã¹ã¯ãããäžã®Safariãšåãã§ãããšiOSãã¢ããã¿ã€ãºããŸããiPadOSã®ä»äºã«è¡ããããŠããªãããšã泚æ@ilblogã
éçºè ãmacOSãšiPadãåºå¥ã§ããªãå Žåãå¥ã®äžé£ã®åé¡ãçºçããå¯èœæ§ããããããããã¯èå³æ·±ãããšã§ãã ããã¯ãã®ãªãŒãã¬ããã®ãã°ãšã¯é¢ä¿ãããŸããããAppleã察åŠããå¿ èŠããããšæããŸãã
äžè¬ã«ããŠãŒã¶ãŒãšãŒãžã§ã³ãæååã«åºã¥ããŠæ±ºå®ãäžãã®ã¯æé©ãªã¢ãããŒãã§ã¯ãããŸããã ã±ãŒã¹ãã€ã±ãŒã¹ã§ã®æ©èœæ€åºã¯ãã»ãšãã©ã®ãŠãŒã¹ã±ãŒã¹ã«é©ããŠããŸãã ããã«ãiPadOSäžã®Safariã¯ãããã€ã¹ã¯ã©ã¹ïŒiPad miniãšä»ã®å€§ç»é¢iPadã¢ãã«ïŒã«å¿ããŠããŸãã¯Safariã3åã®1ã䜿çšãããã«ãã¿ã¹ã¯ã®ãŠã£ã³ããŠã®ãµã€ãºã«å¿ããŠãç°ãªããŠãŒã¶ãŒãšãŒãžã§ã³ãæååã䜿çšããå ŽåããããŸããç»é¢ããŸãã¯ãŠãŒã¶ãŒã®å¥œã¿ã«å¿ããŠïŒã¢ãã€ã«/ãã¹ã¯ãããWebãµã€ãããªã¯ãšã¹ãïŒã
æ©èœã®æ€åºãé©åã§ãªãå Žåã¯ãbugs.webkit.orgã§ãã°ãå ±åããŠãã ãããããããã°ãWebKitããŒã ãæé©ãªè§£æ±ºçã決å®ã§ããŸãã
iPadOS 13ã§ãã®åé¡ã解決ããæ¹æ³ã«é¢ããæŽæ°ã¯ãããŸããïŒ
ããŠã¹ããŠã³/ããŠã¹ã¢ããã€ãã³ãã䜿çšããŠããŸãã
ããã«ã¡ã¯ãã¿ããªã
UAãã¹ãããã£ã³ã°ããŠãããããããåãããããããå®å®ããŠããã¯ããªã®ã§ãããè¯ã解決çãè©ŠããŸããã
https://github.com/Leaflet/Leaflet/pull/6855
ãŸã UAãã¹ãããã£ã³ã°ããŠããŸããããã¹ãã§ããªããã©ãããã©ãŒã ã®ã³ãŒããå€æŽããªãããã«ããŠããŸãã edge
æ¡ä»¶ã¯ã dblclick
ã€ãã³ããããªã¬ãŒãããå¯èœæ§ãããããããã€ã«ã¢ãŠãããããã«ååšããããã§ãã ãã€ã³ã¿ãŒã€ãã³ãã®Browser.pointer
æ©èœãã¹ãã¯ãããã§å¿
èŠãªå¯äžã®ãã¹ãã§ãããä»ã®ãã¹ãã¯çããéåžžã«å
·äœçã§ããå¿
èŠãããããã«æãããŸãïŒãã ããç§ã¯JSã«ç²ŸéããŠããŸããïŒã ãEdgeã§ãªãå Žåã¯ææžãããïŒãçç±ãããªãïŒã®ä»£ããã«ããEdgeã®å Žåã¯å¥ã®ããšããããïŒã³ã¡ã³ãã«çç±ãããïŒå¿
èŠãããããã«èŠããŸãã
ãã ããiPadã®iOS13ã§ãŸã åé¡ãçºçããŠããŸãã
@graouts ïŒReïŒ https ïŒ//github.com/Leaflet/Leaflet/issues/6817#issuecomment-536581361ããã³https://github.com/Leaflet/Leaflet/issues/6817#issuecomment-536587962 ïŒ
ç§ã¯ãããiPadã§åäœãããããšããŠããŸãïŒäžèšã®PRã§iPhoneã§ä¿®æ£ããŸããïŒããããã«ã¿ããããŠã2çªç®ã®pointerdown
ããªã¬ãŒãããŸããã ãã¬ãŒã¯ãã€ã³ããéä¿¡ãã log()
åŒã³åºããè¿œå ããŸããããããªã¬ãŒãããŠãããã®ã衚瀺ãããŸããã iPadãç¶æ³ã«ãã£ãŠã¯2åç®ã®ã¿ãããçç¥ããŠããããã§ãã
ãããªãã«/ã¯ã¢ããã¯ãªãã¯ãã§ãºãŒã ã§ããŸãããããã«ã¯ãªãã¯ã§ã¯ã§ããŸããã ã°ããŒãã«ãã³ãã©ãŒïŒ touchstart
/ touchend
ãèŠæ±ãããã®ã®äºææ§ã¬ã€ã€ãŒïŒã®ãã°ã¯ãããã«ã¿ããã§ã¯ããªã¬ãŒãããŸããã
iPadïŒiOS13ãæèŒïŒããããã®2çªç®ã®ã¿ãããçç¥ããããã«äœãã§ãããã«ã€ããŠã®ã¢ã€ãã¢ã¯ãããŸããïŒ ãããå€ã¯250ããªç§ã§ããã320ããªç§ããéãå Žåã2åç®ã®ã¿ããã§ç»é²ã§ããŸããã
ãã¢ãã€ã«åããªãŒãã¬ãããããŒãžã«èšèŒãããŠããããã«ãããããŒã«<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
ããããŸãã
@graouts ïŒç³ãèš³ãããŸããããããªããéžã¶ã®ã§ã¯ãªããWebKitããŒã ããæ¥ããšèšã£ãã®ã§ããªãã«å°ããã ãã§ãïŒïŒ
次ã®ã€ãã³ããªã¹ããŒãã¹ãããŒãžãè©ŠããŠã¿ããšã次ã®ããã«ãªããŸãã
https://patrickhlauke.github.io/touch/tests/event-listener.html
iPhoneãšiPadã®iOS13ã®éããèŠãããšãã§ããŸãã iPhoneã§ã¯ããã¿ã³ãããã«ã¿ãããããšã pointerdown+pointerup
2ã€ã®ã·ãŒã±ã³ã¹ã衚瀺ãããŸãã iPadã§ã¯ãããã«ã¿ããã§ãã®ã·ãŒã±ã³ã¹ãããªã¬ãŒããããšã¯ã§ããŸããã ãã°ããã®éã€ãã³ããéå¬ããŸãã
ããããšãããããŸããã
ãã£ãªã
@filcab bugs.webkit.orgã«ãã°ãå ±åããŠãã ããã確èªããŸãïŒ ããã¯èšã£ãŠãããã®åé¡ã¯ãdeveloper.apple.comã§éçºè ã·ãŒããã«ãããã§ã«å©çšå¯èœãªiOS13.2ã§ä¿®æ£ãããŠãããšæããŸãã ãã ããããŒã ã確èªã§ããããã«ãåžžã«webkit.orgã®ãã°ãå ±åããŠãã ããã
@filcab bugs.webkit.orgã«ãã°ãå ±åããŠãã ããã確èªããŸãïŒ ããã¯èšã£ãŠãããã®åé¡ã¯ãdeveloper.apple.comã§éçºè ã·ãŒããã«ãããã§ã«å©çšå¯èœãªiOS13.2ã§ä¿®æ£ãããŠãããšæããŸãã ãã ããããŒã ã確èªã§ããããã«ãåžžã«webkit.orgã®ãã°ãå ±åããŠãã ããã
https://bugs.webkit.org/show_bug.cgi?id=203031ãæåºããŸãã
ã¿ãªããã貎éãªæ å ±ãããããšãããããŸãããã§ããã ãæ©ã調æ»ããŠããŸãã ç§ã¯äŒæäžãªã®ã§ã³ãŒãã£ã³ã°ã§ããŸããããä»ã®ã¡ã³ããã«åªå é äœãä»ããããã«pingãéä¿¡ããŸããã
è°è«ããã£ãšèŠãŠã¿ããšãåé¡ã®åå ã¯iOS13ããã€ã³ã¿ãŒã€ãã³ãä»æ§ããµããŒãããŠããããã§ãããã®ãããLeafletã¯ãéåžžã®ã¿ããã€ãã³ããå©çšã§ããªãã£ãã¬ã¬ã·ãŒIEã¢ãã€ã«ãã©ãŠã¶ãŒçšã«ç¹å¥ã«æé©åããã³ãŒããã¹ãéšåçã«ååŸããŸãã
ïŒ6827ã®ãããªãšãŒãžã§ã³ãæååã®ã¹ãããã£ã³ã°ã¯ããŸãä¿¡é Œã§ããŸããïŒãã€ã§ãå£ããããšããããŸãïŒã ïŒ6855ã®ãããªãã€ã³ã¿ãŒã€ãã³ããä¿®æ£ããæ¹ãè¯ããããããŸãããããã®ã³ãŒããæžãããšãã«ãã€ã³ã¿ãŒã³ãŒããã¹ãææ°ã®ãã©ãŠã¶ãŒã§æ©èœããããšãæå³ããŠããªãã£ãããšãèãããšãããã§ãéåžžã«å±éºã§ãã éåžžã®ã¿ããã€ãã³ããæ£ããæ©èœããããšã以åã«æ€åºããå Žåã¯ããã€ã³ã¿ã€ãã³ããå®å
šã«ç¡å¹ã«ããŠã¿ãŠãã ããïŒã€ãŸãã export var pointer = !webkit && !!(window.PointerEvent || msPointer)
ãããªãã®ïŒã
ã¿ãªããã貎éãªæ å ±ãããããšãããããŸãããã§ããã ãæ©ã調æ»ããŠããŸãã ç§ã¯äŒæäžãªã®ã§ã³ãŒãã£ã³ã°ã§ããŸããããä»ã®ã¡ã³ããã«åªå é äœãä»ããããã«pingãéä¿¡ããŸããã
è°è«ããã£ãšèŠãŠã¿ããšãåé¡ã®åå ã¯iOS13ããã€ã³ã¿ãŒã€ãã³ãä»æ§ããµããŒãããŠããããã§ãããã®ãããLeafletã¯ãéåžžã®ã¿ããã€ãã³ããå©çšã§ããªãã£ãã¬ã¬ã·ãŒIEã¢ãã€ã«ãã©ãŠã¶ãŒçšã«ç¹å¥ã«æé©åããã³ãŒããã¹ãéšåçã«ååŸããŸãã
ïŒ6827ã®ãããªãšãŒãžã§ã³ãæååã®ã¹ãããã£ã³ã°ã¯ããŸãä¿¡é Œã§ããŸããïŒãã€ã§ãå£ããããšããããŸãïŒã ïŒ6855ã®ãããªãã€ã³ã¿ãŒã€ãã³ããä¿®æ£ããæ¹ãè¯ããããããŸãããããã®ã³ãŒããæžãããšãã«ãã€ã³ã¿ãŒã³ãŒããã¹ãææ°ã®ãã©ãŠã¶ãŒã§æ©èœããããšãæå³ããŠããªãã£ãããšãèãããšãããã§ãéåžžã«å±éºã§ãã éåžžã®ã¿ããã€ãã³ããæ£ããæ©èœããããšã以åã«æ€åºããå Žåã¯ããã€ã³ã¿ã€ãã³ããå®å šã«ç¡å¹ã«ããŠã¿ãŠãã ããïŒã€ãŸãã
export var pointer = !webkit && !!(window.PointerEvent || msPointer)
ãããªãã®ïŒã
ç¹ã«ãã€ã³ã¿ã€ãã³ãã®ã³ãŒããæã£ãã»ã©æè¿ã®ãã®ã§ãªãå Žåã¯ãããã¯è¯ãããšã ãšæããŸãã ææ¡ããããããã§PRãæŽæ°ããŸãïŒiOS 13ãæèŒããiPadãšiPhoneã§ãã¹ãããã°ããã§ãäž¡æ¹ã§åäœããŸãïŒã
ããããšãããããŸããã
ãã£ãªã
æšæºã®èŠ³ç¹ããã¯ãã¿ããã€ãã³ãã§ã¯ãªããã€ã³ã¿ã€ãã³ãïŒå©çšå¯èœãªå ŽåïŒã䜿çšããããšããå§ãããŸããããã¯W3Cæšæºã§ããããã³ããŒåºæã®ãã¯ãããžã§ã¯ãªãããã§ãã
æè¡çãªèŠ³ç¹ãããå°ãªããšãiOSã®å®è£ ã§ã¯ãããã©ãŒãã³ã¹ã«åœ±é¿ããããŸãã ã¿ããã€ãã³ãã¯åžžã«åæçã«ãã£ã¹ãããããããããããããåŠçããçµæãšããŠå®è¡ãããJSäœæ¥ã¯ãããã¯ãããå¿çæ§ãäœäžããå¯èœæ§ããããŸãã ãã€ã³ã¿ãŒã€ãã³ãã¯ãéåæã§å®è£ ã§ããããã«èšèšãããŠãããiOSã§ã¯å®è£ ãããŠããŸãã
ãã®ç¹å®ã®åé¡ã§ã¯ãªããããããŸããããå°æ¥ã®ããã«èŠããŠãã䟡å€ã®ãã2ã€ã®ããšãæ€èšãã䟡å€ããããŸãã
ä¿®æ£ïŒ6855ãããŒã«ãŒã§æ©èœããªãå¯èœæ§ããããŸããïŒ ããŒã«ãŒãé·æŒãããŠãã³ã³ããã¹ãã¡ãã¥ãŒãããªã¬ãŒãããªãããOSã®å ±æ/ã³ããŒã¡ãã¥ãŒã衚瀺ããããšããå ±åããããŸã...
ããã«ã¡ã¯@eliboni ã
èŠçŽ ã«-webkit-touch-callout: none;
ïŒãŸãã¯åæ§ã®...ç§ã¯ãããèŠæã§ãð
ïŒã䜿çšããå¿
èŠãããããã§ãã ãã ããã©ã¡ããã¯ããããŸããã * { -webkit-touch-callout: none; }
è¿œå ãããšãç§ã®ãã¹ãã§æ©èœããŸããïŒiPhoneã䜿çšããŠããŒã«ãŒã§ããªã¬ãŒãããcontextmenu
ã€ãã³ãïŒã
å¿
èŠã«å¿ããŠèª¿æŽããŸãã
ããã
Leaflet.jsã§ããã«ã¿ãããºãŒã ã䜿çšã§ããŸããã
ãã®æçš¿ãèªãã ã°ããã§ããã解決çãèŠã€ãããŸããã§ããã
誰ãå©ããŠãããŸãããïŒ
ãããããã£ã³ãã£ã
æåŸã«ç§ã¯è§£æ±ºçãèŠã€ããŸããïŒ
ãªãŒãã¬ãã1.5ã«æŽæ°ãã以äžã§deTapãæå¹ã«ããå¿ èŠããããŸãã
new L.map("mapid",{ attributionControl: false, zoomControl: false, tap: true });
æ£åžžã«åäœããŸãã
ãããããé¡ãããŸã
@bitxenio ã
1.5.1ã䜿çšããŠãæ©èœããªãã®ã§ã¯ãªãããšæããŸã
IOS 13.2ãæ©èœããŠããªãããã«èŠããã®ã§ãä»ã¯èªåã®ãã³ãã©ãŒãäœæããããšã«æ»ããŸã:(
@ rwillett ã @ Bitxenio ïŒã©ã®ã³ãŒãã䜿çšããŠããŸããïŒ äž¡æ¹ãšãããªãŒãã¬ããã®ç¹å®ã®ããŒãžã§ã³ã«ã€ããŠèšåããŠããŸãã
10æã«ã³ããããããPRïŒ6855ã®ä¿®æ£ã¯ã5æã«æ»ã£ãææ°ãªãªãŒã¹ã«ã¯å«ãŸããŠããŸããã
master
ãŸããïŒ
ããããšãããããŸããã
ãã£ãªã
ããïŒ å ¬åŒãªãªãŒã¹ã䜿çšããŸããã PRïŒ6855ãå«ãŸããŠããªãããšã«æ°ã¥ããŸããã§ããã ç§ãã¡ã®ããã
devãã©ã³ããããŠã³ããŒãããŠãè©ŠããŠã¿ãŸãã
ããããšã
ãã
1.6-devãããŠã³ããŒãããŸããããæ£åžžã«åäœããŸãã iOS13.2ã®ããã«ã¿ãããšã³ã³ããã¹ãã¡ãã¥ãŒã®äž¡æ¹ã
å©ããŠãããŠããããšããæè¬ããŸãã
ãã
1.6.0ã§ãªãªãŒã¹
éåžžã®ã¿ããã€ãã³ããæ£ããæ©èœããããšã以åã«æ€åºããå Žåã¯ããã€ã³ã¿ã€ãã³ããå®å šã«ç¡å¹ã«ããŠã¿ãŠãã ããïŒã€ãŸãã
export var pointer = !webkit && !!(window.PointerEvent || msPointer)
ãããªãã®ïŒã
@mourner
ããã¯ç¢ºãã«å±éºã§ãããïŒ6896ã®ãããªåé¡ãåŒãèµ·ãããŸããã
https://github.com/Leaflet/Leaflet/issues/6977#issuecomment-577638632ã§ãã£ã¹ã«ãã·ã§ã³ã«åå ããŠ
æãåèã«ãªãã³ã¡ã³ã
ããã¯ã WebKitã®ãã°ïŒ202143ããåç §ãããŠããåé¡ã§ãã WebKitããŒã ïŒãã®å Žåã¯ç§ïŒã調æ»äžã§ãã