用于负数输入字段的 NativeScript 键盘

NativeScript Keyboard for Negative Number Input Field

我正在使用 Nativescript 创建 Android 和 iOS 应用程序。因为它是一种计算器,所以有很多数字输入字段。 这些数字是十进制的,可以是负数。所以我需要一个带有数字、小数点和减号(破折号)的键盘。

因此我使用键盘类型"number":

在Android中打开的键盘没问题。 但是 iOS 中的那个有很多不必要的字段,例如“(”。iOS KeyBoard

我发现 iOS 中没有带有我想要的字段的键盘: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextInputTraits_Protocol/index.html#//apple_ref/c/tdef/UIKeyboardType

但是很多人用"DecimalPad"加上一个包含减号的"inputAccessoryView"来解决这个问题。在 NativeScript 中有解决这个问题的好方法吗?

干杯

您可以使用本机 iOS API 来创建您的自定义键盘。 这是一个在您的键盘上添加取消按钮的示例,您可以根据该概念完全自定义您的键盘类型。

page.xml

<Page xmlns="http://schemas.nativescript.org/tns.xsd" loaded="onLoaded">
  <StackLayout>
    <TextField hint="" text="1425" id="tf-toolbar" />
  </StackLayout>
</Page>

page.js

function onLoaded(args) {
    var page = args.object;

    // if app.ios ...
    var myTextField = page.getViewById("tf-toolbar");

    // for the sake of example no target and actions are set (null)
    var barButtonItemOne = UIBarButtonItem.alloc().initWithTitleStyleTargetAction("Cancel", UIBarButtonItemStyle.UIBarButtonItemStyleBordered, null, null);
    var items = NSArray.arrayWithObject(barButtonItemOne);

    var toolbar = UIToolbar.alloc().initWithFrame({ origin: { x: 0, y: 0 }, size: { width: 320, height: 150 } });
    toolbar.barStyle = UIBarStyle.UIBarStyleBlackTranslucent;
    toolbar.items = items;

    toolbar.sizeToFit();

    var iosText = myTextField.ios;
    iosText.inputAccessoryView = toolbar;

}
exports.onLoaded = onLoaded;

以上示例基于@Luda提供的源码here

有关如何 "translate" Objective-C 到 NativeScript 的更多信息,您可以找到 here