Leaflet: iOS13์—์„œ ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 09์›” 23์ผ  ยท  47์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Leaflet/Leaflet

iOS๊ฐ€ 13 ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ๋œ ํ›„ ๊ธธ๊ฒŒ ๋ˆ„๋ฅด๊ธฐ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด ์ด๋ฒคํŠธ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด ๋ฌธ์ œ๋Š” WebKit ๋ฒ„๊ทธ #202143 ์—์„œ ์ฐธ์กฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. WebKit ํŒ€(์ด ๊ฒฝ์šฐ์—๋Š” ๋‚˜)์ด ์กฐ์‚ฌ ์ค‘์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  47 ๋Œ“๊ธ€

๋‘ ๋ฒˆ ํƒญํ•˜์—ฌ doubleClickZoom์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ iOS 13์—์„œ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด์— ๋Œ€ํ•œ ์ˆ˜์ •์€ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๊ฒ€์‚ฌ ํ›„ iOS 13 Safari๊ฐ€ ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋ฅผ ์ œ๋Œ€๋กœ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

iOS Safari์˜ ๊ธด ํƒญ์€ ์–ด๋–ค ์ด๋ฒคํŠธ๋„ Leaflet ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ณด๋‚ด์ง€ ์•Š์œผ๋ฉฐ iOS ์ž์ฒด์—์„œ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ ํด๋ฆญํ•˜๋ฉด mouseover, mousemove, mousedown, mouseup, click ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ „๋‹จ์ง€์˜ ์ด๋ฒคํŠธ ํด๋ฆญ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ฐ”์ผ ์‚ฌํŒŒ๋ฆฌ iOS 13์˜ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™๊ณ  ๋ชจ๋ฐ”์ผ ์‚ฌํŒŒ๋ฆฌ๋ฅผ ๋ฐ์Šคํฌํƒ‘ ์‚ฌํŒŒ๋ฆฌ์™€ ๋งค์šฐ ์œ ์‚ฌํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ„ฐ์น˜ ์ด๋ฒคํŠธ๊ฐ€ Leaflet์— ์ œ๋Œ€๋กœ ์ „์†ก๋˜์ง€ ์•Š์œผ๋ฉด ์ˆ˜์ •ํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ด ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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 ์ฝ”๋“œ์— ๋„ฃ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : ๋ฆฌ์Šค๋„ˆ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์ง€ ์•Š๋„๋ก iOS 13 ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด์„œ๋งŒ ์‹คํ–‰์„ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

// 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๊ฐ€ ํ˜ธ๋ฒ„ ์ด๋ฒคํŠธ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๊ธฐ์ธํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(๋ฉ”๋‰ด ๋“ฑ์„ ์—ด๊ธฐ ์œ„ํ•ด ํ˜ธ๋ฒ„ ์ด๋ฒคํŠธ์—๋งŒ ์˜์กดํ•˜๋Š” ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด)

๋น„์Šทํ•œ ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•˜๋Š” ๋™์•ˆ ์ด ์Šค๋ ˆ๋“œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ฐœ๊ฒฌ ํ˜ธ์ถœ preventDefault ์— touchstart ํ‰์†Œ์™€ ๊ฐ™์€ ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ , ๋”ฐ๋ผ์„œ ์ด์ „๊ณผ ๋”๋ธ” ํƒญ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ชจ๋ฐ”์ผ Safari๊ฐ€ ํ˜ธ๋ฒ„ ์ด๋ฒคํŠธ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๊ธฐ์ธํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(๋ฉ”๋‰ด ๋“ฑ์„ ์—ด๊ธฐ ์œ„ํ•ด ํ˜ธ๋ฒ„ ์ด๋ฒคํŠธ์—๋งŒ ์˜์กดํ•˜๋Š” ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด)

์ง€๊ธˆ๊นŒ์ง€๋Š” ์ €์™€ ๋ฐ˜๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ธด ํƒญ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ํด๋ฆญ์„ ์–ต์ œํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์—๊ฒŒ ์ ํ•ฉํ•œ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ด์ค‘ ํƒญ์„ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์›์‹œ ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ํด๋ฆญ/๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ์— ์˜์กดํ•˜๋Š” ๊ฒฝ์šฐ touchstart์˜ preventDefault ๊ฐ€ ์ด๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋Š ์ชฝ์ด๋“  13.1์—์„œ ์ˆ˜์ •๋œ iOS์˜ ๋ฒ„๊ทธ์ธ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

@felixhageloh ๋ฐฉ๊ธˆ ์ด ๋ฐ๋ชจ๋ฅผ ์‹คํ–‰ํ•˜๋Š” iOS 13.1์—์„œ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.
http://aratcliffe.github.io/Leaflet.contextmenu/examples/index.html

ํ•˜์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค! ๋‚ด๊ฐ€ ๋†“์น˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
์šฐ๋ฆฌ๋Š” ๊ธด ์–ธ๋ก  ํ–‰์‚ฌ์— ํฌ๊ฒŒ ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ์—๊ฒŒ ์ •๋ง ์ค‘์š”ํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋„์›€์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” WebKit ๋ฒ„๊ทธ #202143 ์—์„œ ์ฐธ์กฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. WebKit ํŒ€(์ด ๊ฒฝ์šฐ์—๋Š” ๋‚˜)์ด ์กฐ์‚ฌ ์ค‘์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” WebKit ๋ฒ„๊ทธ #202143 ์—์„œ ์ฐธ์กฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. WebKit ํŒ€(์ด ๊ฒฝ์šฐ์—๋Š” ๋‚˜)์ด ์กฐ์‚ฌ ์ค‘์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ด€์‹ฌ์„ ๊ฐ–๊ฒŒ ๋˜์–ด ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์›น ๊ฐœ๋ฐœ์ž๋กœ์„œ ์šฐ๋ฆฌ๋Š” ํ„ฐ์น˜ ์ด๋ฒคํŠธ์˜ ๊ฒฝ์šฐ iOS 13.x์˜ Safari๊ฐ€ iOS 12.x ๋˜๋Š” Android์˜ Chrome๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ์—ฌ๊ธฐ์žˆ์–ด ํ–‰๋ณตํ•ฉ๋‹ˆ๋‹ค.

@majid701 ํ˜ผ๋ž€์„ ๋“œ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. 13.0์—์„œ ๋‚ด๊ฐ€ ๋ณธ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋‘ ๋ฒˆ ํƒญ(๋น ๋ฅด๊ฒŒ) -> ๋‹จ์ผ ํ„ฐ์น˜์Šคํƒ€ํŠธ ๋ฐ ํ„ฐ์น˜์—”๋“œ๊ฐ€ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

13.1 ์ดํ›„๋กœ ๋‘ ๊ฐœ์˜ touchstart ๋ฐ touchend ์ด๋ฒคํŠธ๋ฅผ ๋‹ค์‹œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜์‹ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋Š” ์•ฑ์€ ์›์‹œ ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๋ฒˆ ํƒญ์„ ๊ฐ์ง€ํ•˜๋ฏ€๋กœ ์ด ๊ณ ์ •๋œ ๋‘ ๋ฒˆ ํƒญ ํ™•๋Œ€/์ถ•์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋‹น์‹ ์—๊ฒŒ๋„ ํ•ด๋‹น๋  ๊ฒƒ์ด๋ผ๊ณ  ์ž˜๋ชป ์ถ”์ธกํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

if( rs.platform === 'ios' && / OS 13_/.test( navigator.userAgent ) )

@ilblog ์— ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ ๋ฌธ์ž์—ด์ด ๋ฐ์Šคํฌํ†ฑ์˜ Safari์™€ ๋™์ผํ•˜๊ณ  iOS๋ฅผ ๊ด‘๊ณ ํ•˜์ง€ ์•Š๋Š” iPadOS์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

_(WebKit ๋ฒ„๊ทธ์—์„œ ๋‹ค์‹œ ๊ฒŒ์‹œํ•˜์—ฌ ์ด ๋ฒ„๊ทธ๋ฅผ ์ฐธ์กฐํ•œ ์‚ฌ๋žŒ๋“ค๋งŒ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)_

contextmenu Leaflet ์ฝ”๋“œ๋Š” pointerdown ๋ฐ touchstart ์ด๋ฒคํŠธ๋ฅผ ์„œ๋กœ ๋ฐ”๊ฟ”์„œ ์‚ฌ์šฉํ•˜๊ณ  ์ „์ž์˜ ๊ฐ€์šฉ์„ฑ์€ ๋‹ค๋ฅธ ํ•˜๋‚˜๋ฅผ ์ œ์™ธํ•˜๋ฏ€๋กœ Leaflet ์ด๋ฒคํŠธ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Map.Tap.js์—์„œ _onDown ๋ฉ”์†Œ๋“œ์—๋Š” PointerEvent ์ด๋ฒคํŠธ๊ฐ€ TouchEvent ์™€ ๋™์ผํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ ์กฐ๊ธฐ ๋ฐ˜ํ™˜์œผ๋กœ ์ด์–ด์ง€๋Š” if (!e.touches) { return; } ์ฒดํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. TouchEvent ์ด๋ฉฐ touches ์†์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ Leaflet contextmenu ์ด๋ฒคํŠธ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ํŠนํžˆ Leaflet ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ด ์ฝ”๋“œ๋Š” ๋‹ค์Œ ์ฝ”๋“œ ๋•Œ๋ฌธ์— ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ์™€ ํ•จ๊ป˜ ์‹คํ–‰๋˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค.

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 ์—์„œ ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ ๋น„ํ™œ์„ฑํ™”๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ์ด ๋ฐ๋ชจ ์›น ์‚ฌ์ดํŠธ์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค.
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๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ํ•จ์ˆ˜๊ฐ€ ์ผ์ฐ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ iOS 13์˜ Safari ๋˜๋Š” WebKit ๊ธฐ๋ฐ˜ ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ, ์—ฌ๊ธฐ์— ๋ณด๊ณ ๋œ ๋‘ ๋ฌธ์ œ๋Š” ๋ชจ๋‘ ํ„ฐ์น˜ ์ด๋ฒคํŠธ์™€ ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ(๊ธธ๊ฒŒ ๋ˆ„๋ฅด๊ธฐ ๋ฐ contextmenu ์ด๋ฒคํŠธ)๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•˜๊ฑฐ๋‚˜ ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ Microsoft Edge๊ฐ€ ์•„๋‹Œ ๋ธŒ๋ผ์šฐ์ €์— ๋Œ€ํ•ด Leaflet์ด ์ค€๋น„๋˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. (๋‘ ๋ฒˆ ํƒญํ•˜๊ณ  dblclick ์ด๋ฒคํŠธ).

์ด ๋‹จ๊ณ„์—์„œ ์ˆ˜์ •ํ•  ๊ฒƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— WebKit ๋ฒ„๊ทธ๋ฅผ ๋‹ซ์•˜์Šต๋‹ˆ๋‹ค.

@graouts ์˜ˆ, ๊ท€ํ•˜์˜ ๋งˆ์ง€๋ง‰ ๋Œ“๊ธ€์„ ์ฝ์€ ํ›„์—๋„ ๊ทธ ์‚ฌ์‹ค์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Settings -> General -> Experimental Features ์—์„œ ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ ๋น„ํ™œ์„ฑํ™”๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ์ด ๋ฐ๋ชจ ์›น ์‚ฌ์ดํŠธ์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค.
http://aratcliffe.github.io/Leaflet.contextmenu/examples/index.html

ํ•˜์ง€๋งŒ ๋‚ด ์•ฑ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Webview ๋‚ด๋ถ€์— ์ „๋‹จ์ง€๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ @majid701 , ์ด ์„ค์ •์€ WKWebView ๋˜๋Š” iOS์— WebKit์„ ํฌํ•จํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์•„๋‹Œ Safari์—๋งŒ ์ ์šฉ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Safari ์•ฑ ์™ธ๋ถ€์—์„œ ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…์€ iOS 13 Safari๋ฅผ "pinterType" ๋ธŒ๋ผ์šฐ์ €๋กœ ๊ฐ์ง€ํ•˜์—ฌ Touch ์ด๋ฒคํŠธ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋Š” Leaflet ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ๋…ธ๋ ฅ๊ณผ ๋งŽ์€ ๋„์›€์— ๋Œ€ํ•ด @graouts ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

https://github.com/Leaflet/Leaflet/pull/6815 ๋ชจ๋ฐ”์ผ ์žฅ์น˜์—์„œ ๋‘ ๋ฒˆ ํƒญํ•˜๊ณ  ๋™์ผํ•œ ์ฝ”๋“œ ์ค„์„ ํŒจ์น˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ PR์ด ์ง„ํ–‰ ์ค‘์ด๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋„ ๋‹ค๋ฃจ๋„๋ก ์š”์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค.

if( rs.platform === 'ios' && / OS 13_/.test( navigator.userAgent ) )

@ilblog ์— ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ ๋ฌธ์ž์—ด์ด ๋ฐ์Šคํฌํ†ฑ์˜ Safari์™€ ๋™์ผํ•˜๊ณ  iOS๋ฅผ ๊ด‘๊ณ ํ•˜์ง€ ์•Š๋Š” iPadOS์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ macOS์™€ iPad๋ฅผ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์—†์„ ๋•Œ ๋‹ค๋ฅธ ์ผ๋ จ์˜ ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ด ์ „๋‹จ์ง€ ๋ฒ„๊ทธ์™€ ๊ด€๋ จ์ด ์—†์ง€๋งŒ Apple์—์„œ๋„ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

https://forums.developer.apple.com/thread/119186

ํ•ด๊ฒฐ

Apple์˜ ์†Œ์ค‘ํ•œ ์˜๊ฒฌ ๋•๋ถ„์— ์ ์–ด๋„ iPhone์—์„œ iOS 13 ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. 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');

์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ๋œ pull ์š”์ฒญ์ด ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/Leaflet/Leaflet/pull/6827

if( rs.platform === 'ios' && / OS 13_/.test( navigator.userAgent ) )

@ilblog ์— ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ ๋ฌธ์ž์—ด์ด ๋ฐ์Šคํฌํ†ฑ์˜ Safari์™€ ๋™์ผํ•˜๊ณ  iOS๋ฅผ ๊ด‘๊ณ ํ•˜์ง€ ์•Š๋Š” iPadOS์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ macOS์™€ iPad๋ฅผ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์—†์„ ๋•Œ ๋‹ค๋ฅธ ์ผ๋ จ์˜ ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ด ์ „๋‹จ์ง€ ๋ฒ„๊ทธ์™€ ๊ด€๋ จ์ด ์—†์ง€๋งŒ Apple์—์„œ๋„ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ ๋ฌธ์ž์—ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ์€ ์ตœ์ ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‚ฌ๋ก€๋ณ„ ๊ธฐ๋Šฅ ๊ฐ์ง€๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ iPadOS์˜ Safari๋Š” ์žฅ์น˜ ํด๋ž˜์Šค(iPad mini์™€ ๋‹ค๋ฅธ ๋Œ€ํ˜• ํ™”๋ฉด iPad ๋ชจ๋ธ)์— ๋”ฐ๋ผ ๋˜๋Š” Safari๊ฐ€ ๋˜๋Š” ์‚ฌ์šฉ์ž ์„ ํ˜ธ๋„(๋ชจ๋ฐ”์ผ/๋ฐ์Šคํฌํ†ฑ ์›น์‚ฌ์ดํŠธ ์š”์ฒญ)์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ ๊ฐ์ง€๊ฐ€ ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ bugs.webkit.org์— ๋ฒ„๊ทธ๋ฅผ ์ œ๊ธฐํ•˜๋ฉด WebKit ํŒ€์ด ์ตœ์ƒ์˜ ์†”๋ฃจ์…˜์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

iPadOS 13์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
mousedown/mouseup ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„,

๋” ์•ˆ์ •์ ์ด์–ด์•ผ ํ•˜๋ฏ€๋กœ UA๋ฅผ ์Šค๋‹ˆํ•‘ํ•˜๊ณ  ํผ์ง•ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/Leaflet/Leaflet/pull/6855
์—ฌ์ „ํžˆ UA๋ฅผ ์Šค๋‹ˆํ•‘ํ•˜๊ณ  ์žˆ์ง€๋งŒ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์—†๋Š” ํ”Œ๋žซํผ์˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค. edge ์กฐ๊ฑด์ด dblclick ์ด๋ฒคํŠธ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ์ œ๊ธˆ์œต์„ ๋ฐ›๊ธฐ ์œ„ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. (์ €๋Š” JS์— ์ •ํ†ตํ•˜์ง€ ์•Š์ง€๋งŒ) Pointer Events์— ๋Œ€ํ•œ Browser.pointer ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์œ ์ผํ•œ ํ…Œ์ŠคํŠธ์—ฌ์•ผ ํ•˜๊ณ  ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ๋Š” ์ข๊ณ  ๋งค์šฐ ๊ตฌ์ฒด์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. "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์—์„œ ์ˆ˜์ •ํ•จ). ํ•˜์ง€๋งŒ ๋‘ ๋ฒˆ ํƒญํ•˜๋ฉด ๋‘ ๋ฒˆ์งธ pointerdown ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ค‘๋‹จ์ ์„ ๋ณด๋‚ด๊ณ  log() ํ˜ธ์ถœ์„ ์ถ”๊ฐ€ํ–ˆ๋Š”๋ฐ ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ƒํ™ฉ์—์„œ๋Š” iPad๊ฐ€ ๋‘ ๋ฒˆ์งธ ํƒญ์„ ์ƒ๋žตํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
"์‚ผ์ค‘/์‚ฌ์ค‘ ํด๋ฆญ"์œผ๋กœ ํ™•๋Œ€/์ถ•์†Œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‘ ๋ฒˆ ํด๋ฆญ์œผ๋กœ๋Š” ํ™•๋Œ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. touchstart / touchend ์š”์ฒญํ•˜๋Š” ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ํ˜ธํ™˜์„ฑ ๊ณ„์ธต์ธ ์ „์—ญ ์ฒ˜๋ฆฌ๊ธฐ์˜ ๋กœ๊ทธ๋Š” ๋‘ ๋ฒˆ ํƒญํ•  ๋•Œ ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‘ ๋ฒˆ์งธ ํƒญ์„ ์ƒ๋žตํ•˜๊ธฐ ์œ„ํ•ด iPad(iOS13 ํฌํ•จ)๊ฐ€ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ž„๊ณ„ ๊ฐ’์€ 250ms์ด์ง€๋งŒ ~ 320ms๋ณด๋‹ค ๋น ๋ฅด๋ฉด ๋‘ ๋ฒˆ์งธ ํƒญ์„ ๋“ฑ๋กํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
"๋ชจ๋ฐ”์ผ์šฉ ์ „๋‹จ์ง€" ํŽ˜์ด์ง€์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ œ ํ—ค๋”์— <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 ์˜ ๋‘ ์‹œํ€€์Šค๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. iPad์—์„œ๋Š” ๋‘ ๋ฒˆ ํƒญํ•˜์—ฌ ์ด ์‹œํ€€์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ž ์‹œ ์ด๋ฒคํŠธ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค,
ํ•„๋ฆฌํŽ˜

@filcab bugs.webkit.org ์— ๋ฒ„๊ทธ๋ฅผ ์‹ ๊ณ ํ•ด ์ฃผ์‹œ๋ฉด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ์ฆ‰, ๊ฐœ๋ฐœ์ž ์‹œ๋“œ ๋นŒ๋“œ๊ฐ€ ์ด๋ฏธ developer.apple.com์—์„œ ์ œ๊ณต๋˜๋Š” iOS 13.2์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŒ€์ด ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ•ญ์ƒ webkit.org ๋ฒ„๊ทธ๋ฅผ ์ œ์ถœํ•˜์‹ญ์‹œ์˜ค.

@filcab bugs.webkit.org ์— ๋ฒ„๊ทธ๋ฅผ ์‹ ๊ณ ํ•ด ์ฃผ์‹œ๋ฉด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ์ฆ‰, ๊ฐœ๋ฐœ์ž ์‹œ๋“œ ๋นŒ๋“œ๊ฐ€ ์ด๋ฏธ developer.apple.com์—์„œ ์ œ๊ณต๋˜๋Š” iOS 13.2์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŒ€์ด ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ•ญ์ƒ webkit.org ๋ฒ„๊ทธ๋ฅผ ์ œ์ถœํ•˜์‹ญ์‹œ์˜ค.

https://bugs.webkit.org/show_bug.cgi?id=203031์„ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„, ์†Œ์ค‘ํ•œ ์˜๊ฒฌ์„ ๋ณด๋‚ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์ด ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ํœด๊ฐ€ ์ค‘์ด์–ด์„œ ์ฝ”๋”ฉ์„ ํ•  ์ˆ˜ ์—†์ง€๋งŒ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์œ ์ง€ ๊ด€๋ฆฌ์ž์—๊ฒŒ ํ•‘์„ ๋ดค์Šต๋‹ˆ๋‹ค.

ํ† ๋ก ์„ ๋น ๋ฅด๊ฒŒ ํ›‘์–ด๋ณด๋‹ˆ iOS13์ด ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ ์‚ฌ์–‘์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์˜ ์›์ธ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Leaflet์€ ์ผ๋ฐ˜์ ์ธ ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๋˜ ๋ ˆ๊ฑฐ์‹œ IE ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €์— ํŠน๋ณ„ํžˆ ์ตœ์ ํ™”๋œ ์ฝ”๋“œ ๊ฒฝ๋กœ๋ฅผ ๋ถ€๋ถ„์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

#6827๊ณผ ๊ฐ™์€ ์—์ด์ „ํŠธ ๋ฌธ์ž์—ด ์Šค๋‹ˆํ•‘์€ ๋งค์šฐ ์•ˆ์ •์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์–ธ์ œ๋“ ์ง€ ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์Œ). #6855์™€ ๊ฐ™์€ ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ํฌ์ธํ„ฐ ์ฝ”๋“œ ๊ฒฝ๋กœ๊ฐ€ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์˜๋„ํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด ์—ฌ์ „ํžˆ ๋งค์šฐ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ํ„ฐ์น˜ ์ด๋ฒคํŠธ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋” ์ผ์ฐ ๊ฐ์ง€ํ–ˆ๋‹ค๋ฉด(์˜ˆ export var pointer = !webkit && !!(window.PointerEvent || msPointer) ) ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ• ๊นŒ์š”?

์—ฌ๋Ÿฌ๋ถ„, ์†Œ์ค‘ํ•œ ์˜๊ฒฌ์„ ๋ณด๋‚ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์ด ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ํœด๊ฐ€ ์ค‘์ด์–ด์„œ ์ฝ”๋”ฉ์„ ํ•  ์ˆ˜ ์—†์ง€๋งŒ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์œ ์ง€ ๊ด€๋ฆฌ์ž์—๊ฒŒ ํ•‘์„ ๋ดค์Šต๋‹ˆ๋‹ค.

ํ† ๋ก ์„ ๋น ๋ฅด๊ฒŒ ํ›‘์–ด๋ณด๋‹ˆ iOS13์ด ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ ์‚ฌ์–‘์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์˜ ์›์ธ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Leaflet์€ ์ผ๋ฐ˜์ ์ธ ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๋˜ ๋ ˆ๊ฑฐ์‹œ IE ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €์— ํŠน๋ณ„ํžˆ ์ตœ์ ํ™”๋œ ์ฝ”๋“œ ๊ฒฝ๋กœ๋ฅผ ๋ถ€๋ถ„์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

#6827๊ณผ ๊ฐ™์€ ์—์ด์ „ํŠธ ๋ฌธ์ž์—ด ์Šค๋‹ˆํ•‘์€ ๋งค์šฐ ์•ˆ์ •์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์–ธ์ œ๋“ ์ง€ ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์Œ). #6855์™€ ๊ฐ™์€ ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ํฌ์ธํ„ฐ ์ฝ”๋“œ ๊ฒฝ๋กœ๊ฐ€ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์˜๋„ํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด ์—ฌ์ „ํžˆ ๋งค์šฐ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ํ„ฐ์น˜ ์ด๋ฒคํŠธ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋” ์ผ์ฐ ๊ฐ์ง€ํ–ˆ๋‹ค๋ฉด(์˜ˆ export var pointer = !webkit && !!(window.PointerEvent || msPointer) ) ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ• ๊นŒ์š”?

ํŠนํžˆ ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ์˜ ์ฝ”๋“œ๊ฐ€ ๋‚ด๊ฐ€ ์˜ˆ์ƒํ•œ ๊ฒƒ๋งŒํผ ์ตœ์‹ ์ด ์•„๋‹Œ ๊ฒฝ์šฐ์— ์ข‹์Šต๋‹ˆ๋‹ค. ์ œ์•ˆ๋œ ํŒจ์น˜๋กœ PR์„ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค(iPad์™€ iOS 13์ด ์„ค์น˜๋œ iPhone์—์„œ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ๋‘˜ ๋‹ค์—์„œ ์ž‘๋™ํ•จ).

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค,
ํ•„๋ฆฌํŽ˜

ํ‘œ์ค€ ๊ด€์ ์—์„œ ๋ณด๋ฉด ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋ณด๋‹ค ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ(์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ณต๊ธ‰์—…์ฒด๋ณ„ ๊ธฐ์ˆ ์ด ์•„๋‹Œ W3C ํ‘œ์ค€์ด๊ธฐ ๋•Œ๋ฌธ์— ์„ ํ˜ธ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์ ์ธ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ์ ์–ด๋„ iOS ๊ตฌํ˜„์˜ ๊ฒฝ์šฐ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋Š” ํ•ญ์ƒ ๋™๊ธฐ์ ์œผ๋กœ ์ „๋‹ฌ๋˜๋ฏ€๋กœ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ๋ชจ๋“  JS ์ž‘์—…์€ ์ฐจ๋‹จ๋˜๊ณ  ์‘๋‹ต์„ฑ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ๋Š” ๋น„๋™๊ธฐ์‹์œผ๋กœ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ iOS์—์„œ๋Š” ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๋‘ ๊ฐ€์ง€, ์ด ํŠน์ • ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋‹ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋ฏธ๋ž˜๋ฅผ ์œ„ํ•ด ์—ผ๋‘์— ๋‘˜ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ • #6855๊ฐ€ ๋งˆ์ปค์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋งˆ์ปค๋ฅผ ๊ธธ๊ฒŒ ํƒญํ•ด๋„ ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š์ง€๋งŒ OS ๊ณต์œ /๋ณต์‚ฌ ๋ฉ”๋‰ด๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค๋Š” ๋ณด๊ณ ๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค...

์•ˆ๋…•ํ•˜์„ธ์š” @eliboni ์ž…๋‹ˆ๋‹ค .
์š”์†Œ์— -webkit-touch-callout: none; (๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ... ๋‚˜๋Š” ์ด๊ฒƒ์„ ์ž˜ ๋ชปํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜…)๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. * { -webkit-touch-callout: none; } ์ถ”๊ฐ€ํ•˜๋ฉด ๋‚ด ํ…Œ์ŠคํŠธ์—์„œ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค(iPhone์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งˆ์ปค์—์„œ ํŠธ๋ฆฌ๊ฑฐ๋œ contextmenu ์ด๋ฒคํŠธ).
ํ•„์š”์— ๋”ฐ๋ผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”,
Leaflet.js๋กœ ๋”๋ธ” ํƒญ ์คŒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋ฐฉ๊ธˆ ์ด ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ์—ˆ์ง€๋งŒ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
์•„๋ฌด๋„ ๋„์™€์ฃผ์„ธ์š”?

Kandy์—๊ฒŒ ์•ˆ๋ถ€ ์ธ์‚ฌ๋ฅผ ์ „ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์นจ๋‚ด ๋‚˜๋Š” ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

์ „๋‹จ์ง€ 1.5๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๋‹ค์Œ ํ•ญ๋ชฉ์—์„œ ํƒญ์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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๋ฅผ ๋‹ค์šด๋กœ๋“œํ–ˆ๊ณ  ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ios 13.2์˜ ๋”๋ธ” ํƒญ๊ณผ ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด ๋ชจ๋‘.

๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋กญ

1.6.0์—์„œ ์ถœ์‹œ๋จ

์ผ๋ฐ˜ ํ„ฐ์น˜ ์ด๋ฒคํŠธ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋” ์ผ์ฐ ๊ฐ์ง€ํ–ˆ๋‹ค๋ฉด(์˜ˆ export var pointer = !webkit && !!(window.PointerEvent || msPointer) ) ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ• ๊นŒ์š”?

@์ƒ์ œ
๊ทธ๊ฒƒ์€ ์‹ค์ œ๋กœ ์œ„ํ—˜ํ–ˆ๊ณ  #6896๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์ผ์œผ์ผฐ์Šต๋‹ˆ๋‹ค.
https://github.com/Leaflet/Leaflet/issues/6977#issuecomment -577638632์—์„œ ํ† ๋ก ์— ์ฐธ์—ฌ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰