【问题标题】:Changing layout of STPPaymentCardTextField更改 STPPaymentCardTextField 的布局
【发布时间】:2016-10-10 09:16:28
【问题描述】:

我使用 Stripe 文档中显示的步骤将 TextField 添加到我的视图中。 但是当我加载模拟器或在手机上运行应用程序时,文本字段超出范围,CVC 文本字段不会显示在移动设备上。 有没有办法改变文本字段的布局,让子项(卡号、到期日期和 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
    }

}

【问题讨论】:

    标签: ios swift uitextfield stripe-payments


    【解决方案1】:

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

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

    另一方面,回答您的问题,没有办法将 STPPaymentCardTextField 更改为按列而不是按行,但您可以自己实现它并使用 Stripe API 客户端请求令牌(来自:@ 987654321@):

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-28
      • 2019-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      相关资源
      最近更新 更多