iOS 自定义键盘。如何在自定义键盘中设置特殊字符

2023-12-12

我正在为 iphone 6 和 6Plus 定制键盘。我已经开发了 Shift 键活动-非活动或 123 和 abc 键的逻辑。但我还想显示自定义符号,如所示的苹果键盘。请查看图片。

enter image description here

目前我可以将大写更改为小写,将 123 更改为 abc,但是我如何设置这个特殊字符。 注意:- 我在 github 上搜索了很多演示,但我无法在任何自定义键盘中看到特殊字符。

这是我的逻辑大写 and ABC-123 Button.

-(void)UpparCase:(UIButton*)sender   // To make caps or small letter
{

sender.selected=!sender.selected;
if(sender.selected)
{
    if(isPortrait)
    {

    [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"upparActive.png"] forState:UIControlStateNormal];
    }
    else
    {
        [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"Uppar_selctd_land.png"] forState:UIControlStateNormal];

    }

    for(UIButton *key in self.ObjKeyLayout.ArryCharKey)
    {


        NSString *uppercaseString = [[key currentTitle] uppercaseString];

        [key setTitle:uppercaseString forState:UIControlStateNormal];

        [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];

    }
   }
   else
  {

    if(isPortrait)
    {

    [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"UpperCase.png"] forState:UIControlStateNormal];
    }
    else
    {
        [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"Uppar_land.png"] forState:UIControlStateNormal];

    }
    for(UIButton *key in self.ObjKeyLayout.ArryCharKey)
    {


        NSString *uppercaseString = [[key currentTitle] lowercaseString];

        [key setTitle:uppercaseString forState:UIControlStateNormal];

        [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];

      }

   }
}

- (IBAction)action123:(UIButton*)sender // To set 123 and ABC
 {


 sender.selected=!sender.selected;

 if(sender.selected)
 {

    [self.ObjKeyLayout.btn123Key setTitle:@"ABC" forState:UIControlStateNormal];
            int i=0;

    for(UIButton *key in self.ObjKeyLayout.ArryCharKey)
    {

        [key setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];
        NSLog(@"\n\n123isSelected\nI-%i\tArrayCharKey.Count:-%i",i,(int)self.ObjKeyLayout.ArryCharKey.count);
        if(isPortrait)
        {
             NSLog(@"\n\n123isSelected\nI-%i\tArrayCharKey.Count:-%i\nArraySpecialImageKey.Count-%i\n",i,(int)self.ObjKeyLayout.ArryCharKey.count,(int)arrspecialImageKey.count);
            [key setBackgroundImage:[UIImage imageNamed:[arrspecialImageKey objectAtIndex:i]] forState:UIControlStateNormal];




        }
        else{

            [key setBackgroundImage:[UIImage imageNamed:[arrSpecialIpad objectAtIndex:i]] forState:UIControlStateNormal];

        }

        [key setTitle:[NumKey objectAtIndex:i] forState:UIControlStateNormal];

        [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];
        i++;
    }
  }
  else
     {
    [self.ObjKeyLayout.btn123Key setTitle:@"123" forState:UIControlStateNormal];
    int i=0;
    for(UIButton *key in self.ObjKeyLayout.ArryCharKey)
    {


        [key setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];


        if(isPortrait)
        {
            [key setBackgroundImage:[UIImage imageNamed:[arrKeyImages objectAtIndex:i]] forState:UIControlStateNormal];
        }
        else
        {


            [key setBackgroundImage:[UIImage imageNamed:[keyIpad objectAtIndex:i]] forState:UIControlStateNormal];
        }
        ;

        NSString *uppercaseString = [arrAlphabet objectAtIndex:i];

        [key setTitle:uppercaseString forState:UIControlStateNormal];

        [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];
        i++;
       // is123selected=NO;
      }
  }

}

你拿两个数组,一个用于alphabetical和其他用于numerical

NSArray *NumKey;

NSArray *arrAlphabet;

Now in NumKey :

NumKey=[[NSArray alloc]initWithObjects:@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"0", @"-", @"/", @":", @";", @"(", @")", @"$", @"&", @"@", @"\"", @".", @",", @"?", @"!",@"'",@"^", nil];

and arrAlphabet :

 arrAlphabet = [[NSArray alloc]initWithObjects:@"Q", @"W", @"E", @"R", @"T", @"Y", @"U", @"I", @"O", @"P", @"A", @"S", @"D", @"F", @"G", @"H", @"J", @"K", @"L", @"Z", @"X", @"C", @"V", @"B",@"N",@"M", nil];

键盘中的 IBOutlet123 or ABC.

以编程方式添加事件,如下所示。

[self.keybard.btnNumeric addTarget:self action:@selector(action123:) forControlEvents:UIControlEventTouchUpInside];

改变方法123 to ABC or ABC to 123

- (IBAction)action123:(UIButton*)sender
{

    if([self.keybard.btnNumeric.titleLabel.text isEqualToString:@"123"])
    {
        [self.keybard.btnCapital setTitle:@"#+=" forState:UIControlStateNormal];

        [self.keybard.btnNumeric setTitle:@"ABC" forState:UIControlStateNormal];
        int i=0;
        for(UIButton *key in self.keybard.keyArray)
        {
            key.layer.cornerRadius = 6.0;

            [key setTitle:[NumKey objectAtIndex:i] forState:UIControlStateNormal];

            [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];
            i++;
        }
    }
    else
    {
        [self.keybard.btnCapital setTitle:@"⬆️" forState:UIControlStateNormal];

        [self.keybard.btnNumeric setTitle:@"123" forState:UIControlStateNormal];

        int i=0;
        for(UIButton *key in self.keybard.keyArray)
        {

            strFirstCap = @"0";

            NSString *uppercaseString = [arrAlphabet objectAtIndex:i];

            [key setTitle:[uppercaseString lowercaseString] forState:UIControlStateNormal];

            [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];
            i++;
        }

    }

}

output:

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 自定义键盘。如何在自定义键盘中设置特殊字符 的相关文章

  • 无法构建 Saurik 的 ldid 实用程序

    当我执行此命令 make sh 时 我遇到这些错误 构建用于越狱调整开发的 ldid 实用程序 Bilals Mac ldid billy make sh g arch i386 arch x86 64 arch ppc arch armv
  • 是否有适用于 iPad 2 的条码扫描仪 SDK? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 修补应用内购买黑客;卡在第四步

    正如我们许多人所知 苹果最近出现了一种情况 黑客可以免费获得任何应用内购买 苹果最近发布了这个文件 http developer apple com library ios releasenotes StoreKit IAP Receipt
  • ios 用户如何取消 Facebook 登录?

    当用户到达此屏幕时 无法取消 我能做些什么 为了首先获得这个视图 我正在运行 NSMutableDictionary params NSMutableDictionary dictionaryWithObjectsAndKeys vid l
  • 本地化现有的 iOS 应用程序

    我不敢相信以前没有人问过这个问题 要么是我的编码实践太无组织性 要么是我没有使用正确的关键字 How can I localize an existing iOS app that does not use NSLocalizedStrin
  • 网站在 iPhone 屏幕右侧显示空白区域

    我遇到问题http eiglaw com http eiglaw com iPhone 屏幕右侧显示约 25 像素宽的空白 边框 我在 stackoverflow 上研究了这个问题 这些帖子是相关的 但是当我尝试提供的各种解决方案时 我无法
  • 模块未使用库演化支持进行编译;使用它意味着无法保证二进制兼容性

    最近我遇到了 SDK 的编译时警告 这是否意味着它不是使用目标设置 构建用于分发的库 构建的 你需要设置Build Libraries for Distribution在项目中Build Settings to No然后它就会消失
  • 在 WKWebView 中禁用放大手势

    我正在寻找一种方法来禁用 WKWebView 的 iOS 实现上的 捏合缩放 放大手势 OS X 有一个 magnification BOOL 属性 但在 iOS 上似乎不可用 WKWebView h if TARGET OS IPHONE
  • 如何知道我的应用程序使用了多少 iCloud 空间?

    有没有办法查看我的应用程序正在备份到 iCloud 的内容以及它消耗了多少内存 Settings gt iCloud gt Storage Backup gt Manage Storage将显示正在备份的总计内容 iOS 会备份位于应用程序
  • GeoFire Swift 3 - 保存和更新坐标

    我正在尝试使用 GeoFire 将坐标存储到 Firebase 数据库中 我不确定如何更新新坐标 因为它们每秒都会更改 更新 随着childByAutoId 它正在为每辆自行车生成一个新的唯一 ID 如何引用这个唯一的自行车 ID 例如 用
  • 在 OS X 上创建和使用静态库

    好的 我正在尝试创建一个 Cocoa 库 静态 并使用 但我不断收到错误 我创建了一个超基本的静态库 TSXLib 其中仅包含一个额外的类 import
  • UIButton的高亮状态由什么控制事件开始和结束

    我正在创建类似钢琴的视图UIButton作为钢琴键 什么UIControlEvents当按钮获得和失去突出显示状态时 我应该监听以获得回调吗 我试图创建子类UIButton并添加属性观察者highlighted并且运行良好 然而 有时我需要
  • 如何使用 Swift 使用 TouchID?

    Apple 为 iOS 8 的 TouchID 实现提供的文档采用 Objective C 语言 有 Swift 版本吗 Objective C IBAction touchIDAvailable UIButton touchIDAvail
  • Objective-C – 拥有包含 TestFlight SDK 的 TestFlight 配置

    我已按照 TestFlight 的说明复制 发布 配置 我还使用 TestFlight SDK 从我的应用程序获取实时报告 通过这样做 我必须在我的应用程序中包含一些 TestFlight 代码 当然 我不想在我的应用程序的发布版本中包含此
  • 减少 CoreData 的调试输出?

    我正在开发一个使用 CoreData 的 iOS macOS 项目 它工作正常 但它会向控制台输出大量调试信息 这使得控制台无法使用 因为我的打印语句隐藏在所有与 CoreData 相关的内容中 我有一个非常简单的 CoreData 设置
  • Apple Watch 预构建操作可更改故事板 customModule 引用

    我目前有一个项目 其中包含同一应用程序的 3 个不同版本 不同的品牌等 该项目运行得很好 从那时起 我添加了 3 个新的 Apple Watch 目标 每个应用程序 版本 1 个 其中 2 个引用 主 Apple Watch 目标中的文件
  • insertNewObjectForEntityForName:

    我使用 Xcode xcdatamodel 文件编辑器设置了一个实体 我创建了一个名为 Person 的实体 添加了一些属性 然后生成了一个 m 文件来表示它 一切都很好 现在 当我去编写一行代码时 例如 Person person Per
  • 如何将 ios7 通用应用程序升级到基于 Xcode 6 的通用故事板应用程序?

    我目前有一个基于 xcode 5 ios 7 的通用应用程序 因此有两个故事板 我正在考虑将其更新到 ios 8 有没有办法 最佳方法将两个故事板迁移到通用的单个故事板 我在 xcode 6 中看不到转换选项 None
  • Xcode 8 / Swift 3:“UIViewController 类型的表达式?未使用”警告

    我有以下函数 它之前编译得很干净 但在 Xcode 8 中生成警告 func exitViewController navigationController popViewController animated true UIViewCon
  • iOS - UITableViewCell 使文本加粗

    我有一个字符串 NSString userInfo James Johnson james 我想做的就是大胆James Johnson并保留 james正常字体 所以我尝试过的是使用NSAttributedString但为了完成这个过程 我

随机推荐