热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

Imlookingforanon-hackishsolutionforthis,sobasically-inputView.ThepartthatImnotsure

I'm looking for a non-hackish solution for this, so basically -inputView. The part that I'm not sure about is how to make it look like the regular keyboards, from the background to the keys. I realize that I could photoshop an apple keyboard, but this seems like it is a little hackish, especially if apple (probably not but still possible) decides to change the look of their keyboards. I know Numbers has done an excellent job of making extra keyboards that look like the standard system ones, and I would like to do it like those (although obviously they have access to the same resources that made the system keyboards, including possible private frameworks, etc.)

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

2 个解决方案

#1


2  

I used the following:

我使用了以下内容:

tenDigitKeyboard.m

tenDigitKeyboard.m

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

where delegate is defined as `id delegate;

其中delegate被定义为`id delegate;

then in the delegate i do...

然后在代表中我做...

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

I got the keyboard button artwork from: http://www.teehanlax.com/blog/iphone-gui-psd-v4/

我从以下网站获得了键盘按钮图稿:http://www.teehanlax.com/blog/iphone-gui-psd-v4/

#2


0  

Create a view controller and xib. The xib should have 1-9,0 and delete buttons mapped to IBOutlets in your controller. Store and retain the return value string as a property. You can add decimals, etc. if you wish. In the header, store an edition block closure with a property (or alternatively create a delegate or use notification).

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

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

On touch up, each button sends an event to a method like this:

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

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

Obviously the delete key should remove a character from the end of the string instead of appending. Other than creating the controller and adding this view as the inputView, you should add the valueChangedBlock and set it to update the text field. You may want to put a clear custom button over the text field set to make the field first responder so it doesn't appear as if the user can edit at any point in the string.

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


推荐阅读
  • 主调|大侠_重温C++ ... [详细]
  • 本文探讨了如何使用pg-promise库在PostgreSQL中高效地批量插入多条记录,包括通过事务和单一查询两种方法。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 本文详细介绍了如何解压并安装MySQL集群压缩包,创建用户和组,初始化数据库,配置环境变量,并启动相关服务。此外,还提供了详细的命令行操作步骤和常见问题的解决方案。 ... [详细]
  • 本文介绍如何在Java中实现一个罗马数字计算器,重点在于如何通过循环和字符验证确保用户输入合法。我们将探讨创建一个方法来检查字符串中的非法字符,并使用循环不断提示用户输入,直到输入符合要求。 ... [详细]
  • 软件工程课堂测试2
    要做一个简单的保存网页界面,首先用jsp写出保存界面,本次界面比较简单,首先是三个提示语,后面是三个输入框,然 ... [详细]
  • 本文详细探讨了Java中的ClassLoader类加载器的工作原理,包括其如何将class文件加载至JVM中,以及JVM启动时的动态加载策略。文章还介绍了JVM内置的三种类加载器及其工作方式,并解释了类加载器的继承关系和双亲委托机制。 ... [详细]
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • KMP算法是处理字符串匹配的一种高效算法它首先用O(m)的时间对模板进行预处理,然后用O(n)的时间完成匹配。从渐进的意义上说,这样时间复 ... [详细]
  • springMVC JRS303验证 ... [详细]
  • 本文详细介绍了Java库XChart中的XYSeries类下的setLineColor()方法,并提供了多个实际应用场景的代码示例。 ... [详细]
  • 近期我们开发了一款包含天气预报功能的万年历应用,为了满足这一需求,团队花费数日时间精心打造并测试了一个稳定可靠的天气API接口,现正式对外开放。 ... [详细]
  • 本文将指导如何向ReactJS计算器应用添加必要的功能,使其能够响应用户操作并正确计算数学表达式。 ... [详细]
  • 本文探讨了如何利用HTML5和JavaScript在浏览器中进行本地文件的读取和写入操作,并介绍了获取本地文件路径的方法。HTML5提供了一系列API,使得这些操作变得更加简便和安全。 ... [详细]
  • 本文详细介绍了如何使用Python中的xlwt库将数据库中的数据导出至Excel文件,适合初学者和中级开发者参考。 ... [详细]
author-avatar
少伶围脖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有