Edited at

PowerAppsで長押しを作る

2018年11月29日時点では、PowerAppsに長押しにあたるアクションがありません。

長押しをしたいケースがいくつかあったので、コントロールを組み合わせて疑似的に実装することにしました。

(追記)2018年12月12日に状況が変わって、ボタンコントロールでPressedが使えるようになったようです。

https://powerusers.microsoft.com/t5/PowerApps-Ideas/Button-Pressed-trigger-an-action/idi-p/34397

https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/controls/control-button

ということで、長押しはPressedを使ってください。

以下の対応は不要です。


作り方

スライダーを挿入し、プロパティを以下のように変更します。


Slider1

Default = 0

HandleSize = 1
Max = 1
Min = 0
OnChange = UpdateContext({isPressing:false})
OnSelect = UpdateContext({isPressing:true})
ShowValue = false

// 以下透明にするための設定
BorderColor = RGBA(0, 0, 0, 0)
BorderStyle = BorderStyle.None
DisabledBorderColor = RGBA(0, 0, 0, 0)
HandleFill = RGBA(0, 0, 0, 0)
RailFill = RGBA(0, 0, 0, 0)
ValueFill = RGBA(0, 0, 0, 0)


これでほぼ出来上がりです。

あとはボタンを挿入してスライダーの下に重なるように配置してください。

ボタンを長押しするとスライダーが反応します。

こんな感じなります。

長押し2.gif


解説

スライダーのOnSelectはスライダーを押した直後に反応するアクションになります。

またOnChangeは離したときに反応するアクションのようです。

この二つを利用して、押している間はisPressingがTrueになるようにしているだけになります。

また、MaxMinの差を1にしてHandleSizeを1にすることで、スライダーのほぼどこを触ってもOnChangeが発動するようになります。

さらに、スライダーの値が出ないようにShowValueはFalseにするとよいでしょう。

最後に、スライダーを隠すためすべての色を透明に設定します。

これで完成です。

PowerAppsは少しずつ改善されているのでそのうち長押しも標準で使えるようになるのかなぁと思ってます。