Quayboard 0.1.2

Quayboard 0.1.2

测试已测试
Lang语言 Obj-CObjective C
许可证 BSD
发布最新发布2014年12月

Daniel Farrelly 维护。



Quayboard 0.1.2

  • 作者
  • Daniel Farrelly

一个键盘辅助视图,可以与默认 iOS 键盘融合,提供一组可定制的按键。

Screenshot in iOS Simulator

安装

有几种方法可以将 Quayboard 包含到您的 Xcode 项目中。

子项目

此方法在包含的示例项目中得到了演示(example/QuayboardExample.xcodeproj)。

  1. Quayboard.xcodeproj 文件从 Finder 拖到您的项目导航器(⌘1)。这应该将 Quayboard 添加为您自己项目的子项目(通过它出现在矩形中的事实可以辨别,并且您应该能够浏览项目结构)。

  2. 在您的项目目标的“构建阶段”选项卡下,将 libQuayboard.a 添加到 “链接二进制与库”。

  3. 当您在“构建阶段”选项卡中时,将 libQuayboard.aQuayboardResources.bundle 添加到 “目标依赖”。

  4. 展开 Quayboard 子项目,并将 QuayboardResources.bundle 拖入您的“复制Bundle资源”构建阶段。

  5. 在您的项目目标的“构建设置”选项卡下,搜索“头文件搜索路径”。将 Quayboard 项目的 /src/Quayboard/ 文件夹的路径添加到此。它应该看起来像 "$(SRCROOT)/../src/Quayboard/",将 .. 替换为您项目到 Quayboard 项目的相对路径。

  6. 构建您的项目(⌘B)。如果一切顺利,您应该会收到“构建成功”的通知。这表示您已准备好在您的项目中实现 Quayboard。

实现 Quayboard

在您想实现 Quayboard 的视图控制器的头文件顶部,包括 Quayboard。

#import "Quayboard.h"

该视图控制器还应实现 JSMQuayboardBarDelegate,以便接收按键被按下的通知。

@interface MyViewController : UIViewController <JSMQuayboardBarDelegate>

viewDidLoad 方法中,创建一个 JSMQuayboardBar 的实例,将实例的代理设置为 self,并将其设置为要实现的 UITextField 或 UITextView 的 inputAccessoryView。出于本说明的目的,我们将使用 UITextView。

JSMQuayboardBar *quayboardBar = [[JSMQuayboardBar alloc] initWithFrame:CGRectMake( 0, 0, viewSize.width, height )];
quayboardBar.delegate = self;
self.textView.inputAccessoryView = quayboardBar;

然后您可以实现任意数量的按键。它们将在键盘的长度内均匀分布。

[quayboardBar addKeyWithValue:@"1"];
[quayboardBar addKeyWithValue:@"2"];
[quayboardBar addKeyWithValue:@"3"];
[quayboardBar addKeyWithValue:@"4"];
[quayboardBar addKeyWithValue:@"5"];
[quayboardBar addKeyWithTitle:@"" andValue:@"\t"];

如果您正在使用符号作为标题(例如上面的制表符键),应考虑在键上设置一个辅助值,以便视障用户可以轻松使用您的 Quayboard。实现这一点非常简单,只需几分钟。这样的触摸需要很少的努力,但对一些潜在用户来说回报很大!

JSMQuayboardKey *tabKey = [quayboardBar addKeyWithTitle:@"" andValue:@"\t"];
tabKey.accessibilityValue = @"Tab";

最后一步是实现代理方法,以便文本视图按预期更新。下面是一个示例(如示例项目中所示),用于在按键时更新UITextView

- (void)quayboardBar:(JSMQuayboardBar *)quayboardBar keyWasPressed:(JSMQuayboardButton *)key {
    // Find the range of the selected text
    NSRange range = self.textView.selectedRange;

    // Get the relevant strings
    NSString *firstHalfString = [self.textView.text substringToIndex:range.location];
    NSString *insertingString = key.value;
    NSString *secondHalfString = [self.textView.text substringFromIndex:range.location+range.length];

    // Update the textView's text
    self.textView.scrollEnabled = NO;
    self.textView.text = [NSString stringWithFormat: @"%@%@%@", firstHalfString, insertingString, secondHalfString];
    self.textView.scrollEnabled = YES;

    // More the selection to after our inserted text
    range.location += insertingString.length;
    range.length = 0;
    self.textView.selectedRange = range;
}

现在构建并运行(⌘R)。在选择您实现它的文本视图时,应显示Quayboard栏。按下键将更新文本视图。成功感觉很好。用Crunchie巧克力棒或其他东西奖励自己。

在BSD许可下发布

版权所有 © 2013 Daniel Farrelly

在符合以下条件的情况下,允许重新分发和使用源代码和二进制代码,是否修改,包括但不限于

  • 源代码的重新分发必须保留上述版权声明、本条件列表和以下免责声明。
  • 二进制形式的重新分发必须在文档和/或其他提供的内容中重新生产上述版权声明、本条件列表和以下免责声明。

本软件按照“原样”由版权所有者和贡献者提供,并放弃任何明示或暗示的保证,包括但不限于对适销性和针对特定目的的适用性的暗示保证。在任何情况下,版权所有者或贡献者都不应对任何直接、间接、偶然、特殊、示范性或后果性的损害(包括但不限于替代货物或服务的采购;使用、数据或利润的丧失;或业务中断)负责,无论这些损害是由于何种原因引起的,在任何侵权理论下,即使在被告知此类损害可能性的情况下。