自定义iPad键盘,看起来像系统键盘

时间:2010-08-04 13:36:07

标签: iphone ipad keyboard

我正在为此寻找一个非hackish解决方案,所以基本上是-inputView。我不确定的部分是如何使它看起来像常规键盘,从背景到键。我意识到我可以在Photoshop上使用苹果键盘,但这看起来有点像hackish,特别是如果苹果(可能不是,但仍然可能)决定改变键盘的外观。我知道Numbers在制作看起来像标准系统键盘的额外键盘方面做得非常出色,我想这样做(尽管显然他们可以访问制作系统键盘的相同资源,包括可能的私有框架,等)

2 个答案:

答案 0 :(得分:2)

我使用了以下内容:

tenDigitKeyboard.m

-(IBAction)pressedKey:(UIButton *)sender
{
    [delegate pressedKey:sender.tag];
}

其中delegate被定义为`id delegate;

然后在委托中我做...

-(void)pressedKey:(NSInteger)key
{
    NSString * bufferString = model.string;
    if (key == -1) {//delete
        model.string = [bufferString substringWithRange:NSMakeRange(0, [bufferString length]-1)];
    }else{
     //will need to change the following to lookup key value based on a lookup of the button.tag
        model.string = [bufferString stringByAppendingFormat:@"%i",key];
    }
    [self update];//updates the view
}

我从http://www.teehanlax.com/blog/iphone-gui-psd-v4/

获得了键盘按钮作品

答案 1 :(得分:0)

创建视图控制器和xib。 xib应该有1-9,0并且删除按钮映射到控制器中的IBOutlets。存储并保留返回值字符串作为属性。如果您愿意,可以添加小数等。在标题中,使用属性存储版块闭包(或者创建委托或使用通知)。

@property (copy) void(^valueChangedBlock)(NSString* string);

在修饰时,每个按钮都会向这样的方法发送一个事件:

- (IBAction) pressKey:(id)sender
{
    NSString *toAppend;

    // Instead of this switch you can store the values in a dictionary mapped by sender.
    switch(sender)
    {
        case oneButton: toAppend=@"1"; break;
        case twoButton: toAppend=@"2"; break;
        ...
    }

    returnValue = [returnValue appendString:toAppend];
    valueChanged(returnValue);
}

显然,删除键应该从字符串的末尾删除一个字符而不是追加。除了创建控制器并将此视图添加为inputView之外,您应该添加valueChangedBlock并将其设置为更新文本字段。您可能希望在文本字段集上放置一个清晰的自定义按钮,以使字段成为第一响应者,因此它看起来不像用户可以在字符串中的任何位置进行编辑。