Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 与系统键盘相似的定制iPad键盘_Iphone_Ipad_Keyboard - Fatal编程技术网

Iphone 与系统键盘相似的定制iPad键盘

Iphone 与系统键盘相似的定制iPad键盘,iphone,ipad,keyboard,Iphone,Ipad,Keyboard,我正在寻找一个非黑客的解决方案,所以基本上-inputView。我不确定的是如何让它看起来像普通的键盘,从背景到按键。我意识到我可以用photoshop处理一个苹果键盘,但这似乎有点太粗糙了,尤其是如果苹果(可能不会,但仍然有可能)决定改变他们键盘的外观。我知道Numbers在制作与标准系统键盘相似的额外键盘方面做得非常出色,我也希望这样做(尽管他们显然可以访问制作系统键盘的相同资源,包括可能的私有框架等)。创建视图控制器和xib。xib应该有1-9,0和删除按钮映射到控制器中的IBOutlet

我正在寻找一个非黑客的解决方案,所以基本上-inputView。我不确定的是如何让它看起来像普通的键盘,从背景到按键。我意识到我可以用photoshop处理一个苹果键盘,但这似乎有点太粗糙了,尤其是如果苹果(可能不会,但仍然有可能)决定改变他们键盘的外观。我知道Numbers在制作与标准系统键盘相似的额外键盘方面做得非常出色,我也希望这样做(尽管他们显然可以访问制作系统键盘的相同资源,包括可能的私有框架等)。

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

触摸时,每个按钮向如下方法发送一个事件:

- (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);
}
显然,delete键应该从字符串末尾删除字符,而不是追加字符。除了创建控制器并将此视图添加为inputView之外,还应添加valueChangedBlock并将其设置为更新文本字段。您可能希望在文本字段集上放置一个清晰的自定义按钮,使字段成为第一响应者,这样就不会出现用户可以在字符串中的任何点进行编辑的情况。

我使用了以下方法:

数字键盘

-(IBAction)pressedKey:(UIButton *)sender
{
    [delegate pressedKey:sender.tag];
}
其中,委托被定义为“id委托”

然后在代理中我做

-(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
}

我从:

Hi Peter获得了键盘按钮插图,在我的例子中,上面的代码给出了错误,比如:指针不允许作为大小写值。怎么了?我该怎么办?请帮助我写的代码作为一个例子,但一些修改是必要的。尝试使用if-else语句来检查发送者是谁,或者更好的方法是,在控制器初始化期间将按钮及其结果值存储在字典中,以便在pressKey方法中进行单行查找。
-(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
}