2009-10-22 193 views
2

我想要做的是复制像在邮件应用程序和消息应用程序中看到的UITextField NSTokenField(键入一个联系人,它带有建议)。自定义UITextField/UIButton

我已经完成了自动完成工作,当您键入UITextField时,UITableView弹出显示它可以在数组中找到的任何匹配项,当您单击它将其添加到UITextField时。到目前为止我对此感到非常高兴。

我现在遇到的问题是使控件看起来像在本机应用程序中的那些。毕竟,设计就是一切!

我的第一个问题是如何将该阴影看添加到UITableView?看起来像是在UITextField背后沉没。

其次,我知道我将不得不继承UITextField以使其看起来像我喜欢的方式,但我不知道从哪里开始。一些指针或样本会很棒!

最后,我想我需要创建一个自定义UIButton,其中包含用于文本的空间,然后将蓝色渐变添加到UITextField中。与UITextField相同的问题,并不确定如何继承UIButton(它需要绘制什么样的方法和东西),或者如何将它添加到UITextField中,使得当您单击UITextField中的退格时,按钮将会被突出显示,然后被删除,如果backspace再次被点击(确切地说NSTokenField是如何工作的)。

我已经包括图像,所以您可以看到我在谈论: http://www.thermoglobalnuclearwar.com/stuff/mail.jpg

我已经采取了看看乔Hewitts Three20项目,但我不能让元首或它的尾巴。 我想要简单地开始并理解所发生的一切,而不仅仅是将他的代码拖入我的代码中,而不知道发生了什么。

任何帮助,非常感谢!

谢谢, 汤姆。

回答

1

好吧,我已经在UITextField下面工作了,我已经为它添加了“To:”标签。看起来不错!

所以最后的事情是蓝色的NSToken像控制。我开始认为最简单的事情就是继承UIView并在其中绘制蓝色渐变和标签。这给我带来了一些更多的问题:

我发现这个:http://github.com/leonho/iphone-libs/tree/master它绘制了一个不错的圆角视图,我调整它添加一些文本而不是数字,我不知道该怎么做绘制一个渐变而不是一个固定的颜色块。

之后,只需要向UITextField添加四舍五入视图,移动光标并在光标到达时如何删除视图,但我会在需要时解决该问题。

+0

您可以使用以下消息[textField addSubview:customView]将自定义视图添加为UITextField的子视图; 其他地方提到的TTPickerTextField类展示了实现所需其余任务(如处理键盘输入和选择等)的一种方法。 要创建自定义UITextField类,请使用XCode的新文件对话框来添加从NSObject派生的新类,然后用头文件中的UITextField替换NSObject。在Interface Builder中,您可以使用巡视窗口将您的UITextField的标识更改为“MyCustomTextField”。 – 2009-10-26 23:28:15

+0

谢谢。 然后,我必须将所有UITextField方法添加到自定义类,还是自动调用,因为它只是一个子类? – 2009-10-27 14:45:51

+0

嗨,你完成了这个项目吗?我正在努力达到同样的效果。 – 2010-04-30 15:24:04

1

您是否考虑过使用Three20 library?它包含一个我认为可以实现你想要的控件(TTPickerTextView)。

由于网站说明指出

TTPickerTextField是一种超前的UITextField。当您键入它时,将搜索数据源,并且当您选择提前输入选项时,它会将气泡添加到文本流中。我在 TTMessageController中使用它来选择消息收件人的名称。

至少源代码可能会给你一些关于如何实现各种视觉效果的指针。

+1

我已经在几个不同的场合尝试过了,但就像我上面说过的,我无法使用它。所有东西都是子类的子类,并与子类的子类一起绘制。 我真的需要知道的是如何非常简单地继承UIButton和UITextField,以及如何覆盖每个的绘图方法,以便我可以自己做。 我可以在以后遇到更难的东西。 – 2009-10-23 12:42:27