更改STPPaymentCardTextField的布局

时间:2016-06-09 15:47:10

标签: ios swift uitextfield stripe-payments

我使用Stripe的文档中显示的步骤将TextField添加到我的视图中。 但是当我加载模拟器,或者在我的手机上运行应用程序时,文本字段不在边界,CVC文本字段不会显示在移动设备上。 有没有办法改变文本字段的布局,让孩子(卡号,Exp日期和CVC号)全部按列而不是行设置?

import UIKit
import Stripe

class ViewController: UIViewController, STPPaymentCardTextFieldDelegate {
    let paymentTextField = STPPaymentCardTextField()

    override func viewDidLoad() {
        super.viewDidLoad()
        paymentTextField.frame = CGRectMake(15, 15, CGRectGetWidth(self.view.frame) - 30, 44)
        paymentTextField.delegate = self


        view.addSubview(paymentTextField)
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func paymentCardTextFieldDidChange(textField: STPPaymentCardTextField) {
        // Toggle navigation, for example
//        saveButton.enabled = textField.valid
    }

}

1 个答案:

答案 0 :(得分:0)

您遇到的问题可能与使用自动布局有关。如果您在调用viewDidLoad方法时使用自动布局(由新项目中的缺陷使用),则尚未计算布局中的视图大小,以便使用应用后计算的适当大小自动布局约束你必须使用viewDidLayoutSubviews回调(但你不能在那里添加条纹字段)。

如果您想继续使用STPPaymentCardTextField,我建议的解决方案是使用固定大小的容器视图,然后使用固定宽度将STPPaymentCardTextField添加到其中。

另一方面,回答你的问题,没有办法将STPPaymentCardTextField更改为列而不是行,但你可以自己实现它并使用Stripe API Client请求令牌(来自:{ {3}}):

  

STPAPIClient + STPCardParams :如果您正在收集用户的卡片   使用STPPaymentCardTextField或建立自己的信用额度的详细信息   卡形式,您可以使用STPAPIClient类来处理标记   那些细节。首先,组装一个STPCardParams对象   您收集的信息。然后,使用STPAPIClient转换它   到STPToken,然后您可以将其传递到您的服务器。 (注意:   本指南中的示例假设您编写了一个名为的函数   使用网络库的submitTokenToBackend:completion:   将STPToken发布到您的服务器上。