2011-08-04 77 views
3

想象一下普通键盘(如英语)。按住A一段时间后,弹出一个带有á,ä和其他按钮的新菜单。在将第一根手指放在屏幕上的同时,将其滑动到另一个按钮的顶部。当你在一个按钮上滑动它时,它会进入突出显示模式(我假设),当你滑出时突出显示被关闭。如果松开手指,则弹出按钮消失。如果您将手指放在其中一个按钮上,该按钮的字符正被输入到文本字段中...键盘式弹出按钮,iOS

我还没有找到方法来解决这个问题。长久的事情不是问题。问题是允许在按住第一个手指的同时顺序选择新按钮 - 只需要一次触摸即可执行此操作。

当进入设置以更改/编辑当前密码设置时,弹出的密码锁定屏幕中还存在允许进行多项选择的单键操作。您可以按住5,但如果您将该手指滑动到2,则取消选择5并选择2,依此类推,而不释放手指。 (也是一个UITextField与“数字键盘”设置具有相同的功能)

任何人都有想法?

+0

好吧我为此添加了一笔赏金。这似乎是“正常的”UIButton:s是不够好的,以避免这种情况。此外,如果您尝试模仿iOS的日本十键键盘(我目前正在尝试这样做),您会注意到,对于一个键(如は),不仅存在正常,突出显示等常规UIControl状态,选择,但也有一些其他的 - 就像两种不同类型的突出显示(不确定如何描述它们),然后是弹出式菜单,其中至少应该有几个状态。可能是UIControl还不足以做到这一点。 – Jonny

回答

3

您需要使用touchesBegan:,touchesMoved:和touchesEnded:方法来检测手指何时接触以及手指何时被抬起。检查Apple documentation。您必须添加子视图以显示长按(其中,如您所说,您已经完成)额外的字符,然后使用touchesMoved确认手指仍然接触。在touchesEnded选择角色:

+0

可能是实现目标的一种方式,但是当我添加普通的UIButton时,我希望它们根据状态(正常,hl,选定)等不同的图像/背景正常工作。尽可能多地使用已经存在的UIButtons将是可取的。 – Jonny

1

好像你可以这样用IBAction方法和手势回调(仅适用于iOS 4.0及更高版本)做到这一点:

  • UIControlEventTouchDown:突出当前字符
  • 上触发与每个单独的键绑定的UILongPressGestureRecognizer:打开菜单,用于当前字符正上方的高亮字符(对于底部定位的键盘)或正下方的高亮字符(对于顶部定位的键盘)
  • 触发UITapGestureRecognizer绑定到每个单独密钥:在UIControlEventTouchUpOutside选择突出显示的字符
  • :多字符菜单中选择突出显示的字符
  • UIControlEventTouchUpInside取消多字符选择
+0

这个答案更优雅。 :) –

0

一种方法是使用每个标签按钮和一个开关,以确定哪个按钮被按下,虽然它需要花费一些时间来获得所有的按钮设置和一切......触摸开始/移动/结束的想法是相当聪明的,但我不知道如何你会在使用按钮时完成这一点。也许为每个键使用图像并以编程方式更改关键图像。