# \[feature-3555\]Swiping with Ignition 8 Perspective

**URL:** <https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461>\
**Category:** Ignition\
**Created:** [April 29, 2019, 12:59pm UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461 "2019-04-29T12:59:21Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![AlThePal](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/althepal/32/3603_2.png) [@AlThePal](https://forum.inductiveautomation.com/u/AlThePal)\
**Post date:** [April 29, 2019, 12:59pm UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461/1 "2019-04-29T12:59:22Z")

</div>

Has anyone got swiping working with Perspective? The touch events `onTouchStart, onTouchMove and onTouchEnd` don’t seem to give access to any useful properties for finding out which direction the user swiped in.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [April 29, 2019, 3:44pm UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461/2 "2019-04-29T15:44:27Z")

</div>

Can you describe exactly what you’re trying to do? I don’t know anything about how React’s touch APIs are used, but with some more context might be able to cobble something together.

---

<div class="post-metadata">

**Author:** ![AlThePal](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/althepal/32/3603_2.png) [@AlThePal](https://forum.inductiveautomation.com/u/AlThePal)\
**Post date:** [April 29, 2019, 3:48pm UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461/3 "2019-04-29T15:48:53Z")

</div>

I’m trying to detect when someone swipes so I can respond appropriately. It would be nice to detect if they swipe left or right, up or down so that I can for example display another motor when they swipe right or go up a level in the menu if they swipe left.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [April 29, 2019, 3:50pm UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461/4 "2019-04-29T15:50:12Z")

</div>

Left and right would probably be easiest using the carousel component, but I’ll take a look at what I can find out actually detecting gestures.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [April 29, 2019, 3:59pm UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461/5 "2019-04-29T15:59:28Z")

</div>

Unfortunately, quick research seems to suggest that, at least with React’s raw events, you have to keep track of the position and state yourself, then make the decision on whether it’s a left/right/etc swipe manually, based on position changes.

The touch events should have a [`touches`](https://reactjs.org/docs/events.html#touch-events) property, which will be composed of various [`Touch`](https://developer.mozilla.org/en-US/docs/Web/API/Touch) objects, which have various properties you should be able to access.

---

<div class="post-metadata">

**Author:** ![AlThePal](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/althepal/32/3603_2.png) [@AlThePal](https://forum.inductiveautomation.com/u/AlThePal)\
**Post date:** [April 29, 2019, 4:12pm UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461/6 "2019-04-29T16:12:30Z")

</div>

> [@paul-griffith](#):
>
> The touch events should have a [`touches`](https://reactjs.org/docs/events.html#touch-events) property, which will be composed of various [`Touch`](https://developer.mozilla.org/en-US/docs/Web/API/Touch) objects, which have various properties you should be able to access.

This would be great, but unfortunately when we tried using the `touches` property we received a "property doesn't exist" error.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [April 30, 2019, 4:51pm UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461/7 "2019-04-30T16:51:27Z")

</div>

Hmm, I’ll have to check what’s going on here.

---

<div class="post-metadata">

**Author:** ![joostjojo](https://avatars.discourse-cdn.com/v4/letter/j/ac91a4/32.png) [@joostjojo](https://forum.inductiveautomation.com/u/joostjojo)\
**Post date:** [August 15, 2019, 12:30pm UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461/8 "2019-08-15T12:30:27Z")

</div>

> [@paul-griffith](#):
>
> going on

Any progress?  
I got the same error.

```auto
com.inductiveautomation.ignition.common.script.JythonExecException: Traceback (most recent call last): File "", line 5, in runAction AttributeError: 'com.inductiveautomation.ignition.common.script.ada' object has no attribute 'touches'

at org.python.core.Py.AttributeError(Py.java:207)

at org.python.core.PyObject.noAttributeError(PyObject.java:1032)

at org.python.core.PyObject. __getattr__ (PyObject.java:1027)

at org.python.pycode._pyx5.runAction$1(:6)

at org.python.pycode._pyx5.call_function()

at org.python.core.PyTableCode.call(PyTableCode.java:171)

at org.python.core.PyBaseCode.call(PyBaseCode.java:308)

at org.python.core.PyFunction.function ___call__ (PyFunction.java:471)

at org.python.core.PyFunction. __call__ (PyFunction.java:466)

at org.python.core.PyFunction. __call__ (PyFunction.java:456)

at org.python.core.PyFunction. __call__ (PyFunction.java:451)

at com.inductiveautomation.ignition.common.script.ScriptManager.runFunction(ScriptManager.java:776)

at com.inductiveautomation.ignition.common.script.ScriptManager$ScriptFunctionImpl.invoke(ScriptManager.java:894)

at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle$AutoRecompilingScriptFunction.invoke(ProjectScriptLifecycle.java:574)

at com.inductiveautomation.perspective.gateway.script.ScriptFunctionHelper.invoke(ScriptFunctionHelper.java:87)

at com.inductiveautomation.perspective.gateway.action.ScriptAction.runAction(ScriptAction.java:65)

at com.inductiveautomation.perspective.gateway.action.ActionDecorator.runAction(ActionDecorator.java:18)

at com.inductiveautomation.perspective.gateway.action.SecuredAction.runAction(SecuredAction.java:51)

at com.inductiveautomation.perspective.gateway.model.ActionCollection$ActionSequence$ExecuteActionsTask.lambda$call$0(ActionCollection.java:257)

at com.inductiveautomation.perspective.gateway.api.LoggingContext.mdc(LoggingContext.java:54)

at com.inductiveautomation.perspective.gateway.model.ActionCollection$ActionSequence$ExecuteActionsTask.call(ActionCollection.java:246)

at com.inductiveautomation.perspective.gateway.model.ActionCollection$ActionSequence$ExecuteActionsTask.call(ActionCollection.java:215)

at com.inductiveautomation.perspective.gateway.threading.BlockingTaskQueue$TaskWrapper.run(BlockingTaskQueue.java:154)

at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

at java.base/java.util.concurrent.FutureTask.run(Unknown Source)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.base/java.lang.Thread.run(Unknown Source)

Caused by: org.python.core.PyException: Traceback (most recent call last): File "", line 5, in runAction AttributeError: 'com.inductiveautomation.ignition.common.script.ada' object has no attribute 'touches'

```

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [July 22, 2021, 2:58am UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461/9 "2021-07-22T02:58:25Z")

</div>

Bump. It doesn’t look like the `touches` property has been made available yet ☹

I want to add gestures to my calendar:  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/3/4/3412d2c2ce0e5fc0b2d92475f54ce47cf542f3a7.png)

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [July 22, 2021, 3:58pm UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461/10 "2021-07-22T15:58:49Z")

</div>

Well, two years too late I did the required legwork and got a ticket in place. The gist is that we don’t pass anything ‘complex’ from the frontend to the backend (to use in scripts) - only string/number/boolean types. I suggested we relax that limitation for `touches` and potentially other useful properties.

---

<div class="post-metadata">

**Author:** ![Narve\_Kristiansen](https://avatars.discourse-cdn.com/v4/letter/n/22d042/32.png) [@Narve\_Kristiansen](https://forum.inductiveautomation.com/u/Narve_Kristiansen)\
**Post date:** [June 24, 2022, 1:52pm UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461/11 "2022-06-24T13:52:09Z")

</div>

Hi, any updates on gesture control in Perspective?

---

<div class="post-metadata">

**Author:** ![SBL\_MC](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/sbl_mc/32/56813_2.png) [@SBL\_MC](https://forum.inductiveautomation.com/u/SBL_MC)\
**Post date:** [August 31, 2022, 7:27am UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461/12 "2022-08-31T07:27:08Z")

</div>

PG, any news? I need to know if the user swipes left or right over a label. 🧐

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [August 31, 2022, 3:10pm UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461/13 "2022-08-31T15:10:51Z")

</div>

There’s been no movement on the internal ticket.  
An ideas post, support ticket, or complaining to your sales rep might help escalate things, but I don’t have any more levers to pull.

---

<div class="post-metadata">

**Author:** ![Matthew.gaitan](https://avatars.discourse-cdn.com/v4/letter/m/59ef9b/32.png) [@Matthew.gaitan](https://forum.inductiveautomation.com/u/Matthew.gaitan)\
**Post date:** [August 31, 2022, 6:42pm UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461/14 "2022-08-31T18:42:30Z")

</div>

I created an ideas post for this:

> **[Swiping/gestures in Perspective | Voters | Inductive Automation](https://ideas.inductiveautomation.com/ignition-features-and-ideas/p/swipinggestures-in-perspective)**

Please upvote it hopefully get the ball rolling faster

---

<div class="post-metadata">

**Author:** ![justinedwards.jle](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/justinedwards.jle/32/37854_2.png) [@justinedwards.jle](https://forum.inductiveautomation.com/u/justinedwards.jle)\
**Post date:** [January 26, 2024, 2:21pm UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461/15 "2024-01-26T14:21:40Z")

</div>

I just noticed that this has been marked as planned.

---

<div class="post-metadata">

**Author:** ![Matthew.gaitan](https://avatars.discourse-cdn.com/v4/letter/m/59ef9b/32.png) [@Matthew.gaitan](https://forum.inductiveautomation.com/u/Matthew.gaitan)\
**Post date:** [January 26, 2024, 2:41pm UTC](https://forum.inductiveautomation.com/t/feature-3555-swiping-with-ignition-8-perspective/24461/16 "2024-01-26T14:41:48Z")

</div>

![](https://us1.discourse-cdn.com/inductiveautomation/original/3X/e/1/e136c62226ee991773a5fcb0dc6aa6eacc6792d6.jpeg)
