2011-08-04 5 views
3

通常のキーボード(英語など)を想像してみてください。 Aをしばらく押し続けると、á、äなどの新しいメニューがポップアップします。最初の指を画面上に押したまま、別のボタンの上にスライドさせます。ボタンの上にスライドさせると、ハイライトされたモードになり(私が推測します)、スライドアウトすると強調表示はオフになります。指を離すと、ポップアップボタンが消えます。ボタンの1つに指を置いたままにすると、そのボタンの文字がテキストフィールドに入力されています...キーボードのようなポップアップボタン、iOS

私はまだこれを取り除く方法を見つけていません。長いプレスは問題ではない。問題は、最初の指を押し下げたまま、新しいボタンを順番に選択できるようにすることです。これを実行するには、1回のタッチだけが必要です。

いくつかの選択を可能にするワンタッチは、現在のパスコード設定を変更/編集するために設定に行くときにポップアップするパスコードロック画面にも存在します。 5を長押しすることはできますが、その指を2までスライドさせると、指が離されることなく5が選択解除され、2が選択されます。 (また、 "数字パッド"セットのUITextFieldには同じ機能があります)

誰でも知っていますか?

+0

すべて私はこれのための賞金を追加しています。それは "普通"のように見えるUIButton:sはこれを取り除くのに十分ではありません。また、iOSの日本語のテンキー・キーボード(現在私がやろうとしている)を模倣しようとすると、「は」のような1つのキーに対して、通常の「ハイライト」のような通常のUIControlの状態だけでなく、選択されているだけでなく、いくつかの種類もあります。ハイライトされた2つの異なる種類のもの(本当にそれらを表現する方法はわかりません)と、少なくともいくつかの州があるはずのポップアップメニューがあります。 UIControlもこれを行うには不十分であるかもしれません。 – Jonny

答えて

3

あなたはtouchesBegan:、touchesMoved:およびtouchesEnded:を使用して、指が接触しているときと持ち上げられたときを検出する必要があります。 Apple documentationを確認してください。あなたは長いプレス(あなたが言うように、あなたがすでに行ったこと)で余分な文字を示すサブビューを追加し、touchesMovedを使って指がまだ接触していることを確認する必要があります。 touchesEnded上の文字を選択します。あなたはIBAction方法とジェスチャーコールバックで、このようにそれを行うことができますように

+0

目標を達成する方法かもしれませんが、通常のUIButtonsを追加すると、状態(通常、hl、選択)などによって異なる画像/背景で正常に動作するようにしたいと思います。すでに存在するUIButtonsを使用してできるだけ多くのものが優先されます。 – Jonny

1

は(のみのiOS 4.0以降で動作します)ようだ:

  • UIControlEventTouchDown上:
  • 上の現在の文字を強調表示現在の文字の真上(下位のキーボードの場合)またはハイライトされた文字のすぐ下(最上位のキーボードの場合)の下にあるハイライトされた文字のメニューを開きます。
  • を起動すると個々のキーにバインド:複数文字のメニューにUIControlEventTouchUpInside上で強調表示文字
  • を選択:UIControlEventTouchUpOutside上で強調表示文字
  • を選択:複数文字の選択を解除
+0

この回答ははるかにエレガントです。 :) –

0

一つのアプローチは、すべてのタグを使用することですどのボタンが押されたかを判断するためのボタンとスイッチを備えていますが、すべてのボタンを設定するためには時間がかかります...すべてのTouches Began/Moved/Endedのアイデアはかなり巧妙ですが、ボタンを使用するときにそれを達成できます。おそらく、すべてのキーにイメージを使用し、プログラムでキーイメージを変更します。

関連する問題