GestureDetector: how to distinguish between single touch and multi-touch gestures?
My goal is to build a widget that allows to draw using single finger tap, and scale/move the canvas when in two-fingers mode.
At the moment I had built a ZoomView and DrawingOverlay widgets. ZoomView allows to scale and move the child passed as parameter. And DrawingOverlay allows to draw on top of the child widget passed as parameter. Right now they work well separately.
class ZoomView {
build() {
return GestureDetector(
onScaleUpdate: () { ... }
...
)
}
}
class DrawingOverlay {
build() {
return GestureDetector(
onPanUpdate: () { ... }
...
)
}
}
However when they are used together, things break apart:
build() {
ZoomView(
child: DrawingOverlay(
child: ...
)
)
}
Priority feels largely by chance. Sometimes it's starts drawing when 2 fingers are pressed and sometimes it's moving the screen with one finger while sometimes the other way round.
I would like to limit ZoomView to 2 finger gestures only and DrawingOverlay to 1 finger gestures only.
What's the best way to achieve this?
add a comment |
My goal is to build a widget that allows to draw using single finger tap, and scale/move the canvas when in two-fingers mode.
At the moment I had built a ZoomView and DrawingOverlay widgets. ZoomView allows to scale and move the child passed as parameter. And DrawingOverlay allows to draw on top of the child widget passed as parameter. Right now they work well separately.
class ZoomView {
build() {
return GestureDetector(
onScaleUpdate: () { ... }
...
)
}
}
class DrawingOverlay {
build() {
return GestureDetector(
onPanUpdate: () { ... }
...
)
}
}
However when they are used together, things break apart:
build() {
ZoomView(
child: DrawingOverlay(
child: ...
)
)
}
Priority feels largely by chance. Sometimes it's starts drawing when 2 fingers are pressed and sometimes it's moving the screen with one finger while sometimes the other way round.
I would like to limit ZoomView to 2 finger gestures only and DrawingOverlay to 1 finger gestures only.
What's the best way to achieve this?
add a comment |
My goal is to build a widget that allows to draw using single finger tap, and scale/move the canvas when in two-fingers mode.
At the moment I had built a ZoomView and DrawingOverlay widgets. ZoomView allows to scale and move the child passed as parameter. And DrawingOverlay allows to draw on top of the child widget passed as parameter. Right now they work well separately.
class ZoomView {
build() {
return GestureDetector(
onScaleUpdate: () { ... }
...
)
}
}
class DrawingOverlay {
build() {
return GestureDetector(
onPanUpdate: () { ... }
...
)
}
}
However when they are used together, things break apart:
build() {
ZoomView(
child: DrawingOverlay(
child: ...
)
)
}
Priority feels largely by chance. Sometimes it's starts drawing when 2 fingers are pressed and sometimes it's moving the screen with one finger while sometimes the other way round.
I would like to limit ZoomView to 2 finger gestures only and DrawingOverlay to 1 finger gestures only.
What's the best way to achieve this?
My goal is to build a widget that allows to draw using single finger tap, and scale/move the canvas when in two-fingers mode.
At the moment I had built a ZoomView and DrawingOverlay widgets. ZoomView allows to scale and move the child passed as parameter. And DrawingOverlay allows to draw on top of the child widget passed as parameter. Right now they work well separately.
class ZoomView {
build() {
return GestureDetector(
onScaleUpdate: () { ... }
...
)
}
}
class DrawingOverlay {
build() {
return GestureDetector(
onPanUpdate: () { ... }
...
)
}
}
However when they are used together, things break apart:
build() {
ZoomView(
child: DrawingOverlay(
child: ...
)
)
}
Priority feels largely by chance. Sometimes it's starts drawing when 2 fingers are pressed and sometimes it's moving the screen with one finger while sometimes the other way round.
I would like to limit ZoomView to 2 finger gestures only and DrawingOverlay to 1 finger gestures only.
What's the best way to achieve this?
edited Nov 25 '18 at 16:57
Ski
asked Nov 25 '18 at 16:15
SkiSki
10.7k33751
10.7k33751
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
It should work setting both the listeners on the same GestureDetector.
That is not possible, it throws error:Having both a pan gesture recognizer and a scale gesture recognizer is redundant; scale is a superset of pan
– Ski
Nov 26 '18 at 5:31
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53469403%2fgesturedetector-how-to-distinguish-between-single-touch-and-multi-touch-gesture%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
It should work setting both the listeners on the same GestureDetector.
That is not possible, it throws error:Having both a pan gesture recognizer and a scale gesture recognizer is redundant; scale is a superset of pan
– Ski
Nov 26 '18 at 5:31
add a comment |
It should work setting both the listeners on the same GestureDetector.
That is not possible, it throws error:Having both a pan gesture recognizer and a scale gesture recognizer is redundant; scale is a superset of pan
– Ski
Nov 26 '18 at 5:31
add a comment |
It should work setting both the listeners on the same GestureDetector.
It should work setting both the listeners on the same GestureDetector.
answered Nov 26 '18 at 0:47
Dario IelardiDario Ielardi
196112
196112
That is not possible, it throws error:Having both a pan gesture recognizer and a scale gesture recognizer is redundant; scale is a superset of pan
– Ski
Nov 26 '18 at 5:31
add a comment |
That is not possible, it throws error:Having both a pan gesture recognizer and a scale gesture recognizer is redundant; scale is a superset of pan
– Ski
Nov 26 '18 at 5:31
That is not possible, it throws error:
Having both a pan gesture recognizer and a scale gesture recognizer is redundant; scale is a superset of pan– Ski
Nov 26 '18 at 5:31
That is not possible, it throws error:
Having both a pan gesture recognizer and a scale gesture recognizer is redundant; scale is a superset of pan– Ski
Nov 26 '18 at 5:31
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53469403%2fgesturedetector-how-to-distinguish-between-single-touch-and-multi-touch-gesture%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown