如何在粘贴板中拆分字符串并将每个拆分后的字符串粘贴到不同的输入框?

时间:2019-04-01 09:30:24

标签: ios swift

Example我是Swift的新手。我有带有文本行输入行的表单,如图所示。在使用默认粘贴操作之前,是否可以在粘贴板上拆分字符串并将其相应地粘贴到输入行。

    let pasteboard = UIPasteboard.general
    let pasteboardval = pasteboard.string

    _ = pasteboardval?.split(separator: "\n")

我尝试在粘贴板上拆分字符串,但是如何确保当用户执行默认粘贴功能时,它将按我希望的方式粘贴。

万一道歉,如果它令人困惑,我还是新来的。

2 个答案:

答案 0 :(得分:1)

这是示例实现

1)创建一个自定义textField类

.filter('INR', function () {        
    return function (input, code) {
        if (! isNaN(input)) {
            var currencySymbol = '₹';
            //var output = Number(input).toLocaleString('en-IN');   <-- This method is not working fine in all browsers!           
            var result = input.toString().split('.');

            var lastThree = result[0].substring(result[0].length - 3);
            var otherNumbers = result[0].substring(0, result[0].length - 3);
            if (otherNumbers != '')
                lastThree = ',' + lastThree;
            var output = otherNumbers.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + lastThree;

            if (result.length > 1) {
                output += "." + result[1];
            }            

            return currencySymbol + output;
        }
    }
});

2)创建一个协议来处理粘贴操作

<div ng-app="miniapp">
    <div ng-controller="Ctrl">
        <div ng-repeat="item in items">
            {{item.amount | INR : item.code }}
        </div>         
    </div>    
</div>

3)将uitextfields分组到一个数组中并设置委托

class CustomTextField: UITextField {

    var customPasteDelegate: PasteDelegate!

    override func paste(_ sender: Any?) {
        customPasteDelegate.handlePaste()
    }
}

4)在您的控制器中实现handlePaste方法

protocol PasteDelegate {
    func handlePaste()
}

答案 1 :(得分:0)

删除每个Field的IBOutlet并添加IBOutlet collection的TextField-

@IBOutlet var txtInputFields: [UITextField]!

现在该粘贴到textFields中了-

let pasteboard = UIPasteboard.general
let pasteboardval = pasteboard.string

let inputs = pasteboardval?.split(separator: "\n")

if let inputArray = inputs {

    for i in 0..<inputArray.count {

        if i < txtInputFields.count {

            txtInputFields[i].text = "\(inputArray[i])"
        }

    }
}