下次设计又需要一个新的自定义数字键盘,不用皱眉。相反,为此感到高兴,任务因 RZNumberPad
而变得无比简单。
RZNumberPad
提供了一个基类,该类包含逻辑并执行每个数字键盘固有的任务。不必为每个新的设计要求重写轮子,只需创建一个 RZNumberPad
的子类,并覆盖适当的方法以指定样式。用于定制的核心方法覆盖:
// The size in points of each button in the number pad.
+ (CGSize)buttonSize;
// The amount of space between each button.
// The X value is horizontal spacing, and Y value is vertical spacing.
+ (CGPoint)buttonSpacing;
// The dimensions of the number pad.
// Width is the be number of columns, and height is the be number of rows.
+ (RZNumberPadDimensions)dimensions;
// The class used to create the button views.
// The returned class must be a subclass of UIControl.
+ (Class)buttonClass;
// Called when the number pad needs to configure one of its button views.
// The default implementation sets the title of the button if it is a UIButton subclass,
// and adds a UILabel to the view otherwise.
- (void)configureButton:(UIView *)button forNumber:(NSNumber *)number;
// Called when the number pad needs to configure its done button.
- (void)configureDoneButton:(UIView *)button;
// Called when the number pad needs to configure its back button.
- (void)configureBackButton:(UIView *)button;
// Called internally to determine what numerical value each button represents.
// The default implementation just returns the index, but for the last button returns 0
// (so that the zero button is at the bottom of the numberpad).
- (NSNumber *)numberForButton:(UIView *)button atIndex:(NSUInteger)index;
不需要 xibs
数字键盘通过编程创建,按钮和尺寸根据每个子类进行配置。不需要 xib 来设置新的数字键盘,但 RZNumberPad
是 IBDesignable
,因此您可以直接在 Interface Builder 中查看自定义数字键盘的外观和感觉。
不涉及 IBActions 或 delegates
RZNumberPad
接收数字、完成和后退按钮的点击事件,并像 UIControl
一样广播它们。您可以向数字键盘添加和删除目标/操作对以接收事件回调。然而,对于将数字键盘用于输出到 UITextField
的一般情况,RZNumberPad
提供了一个更简单的选项。
直接将输出链接到 UITextField
数字键盘的输出可以直接通过编程或通过 Interface Builder 链接到文本字段。当 RZNumberPad
与 UITextField
相连时,它类似于输入视图。数字和后退按钮的点击会触发文本字段代理上的相应方法,然后可以直接更新字段的文本。在这种情况下,数字键盘的“完成”按钮充当回车键。在大多数情况下,此功能是足够的,因此将数字键盘添加到项目中就像在 Interface Builder 中添加视图一样简单。