我使用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
}
}
答案 0 :(得分:0)
您遇到的问题可能与使用自动布局有关。如果您在调用viewDidLoad
方法时使用自动布局(由新项目中的缺陷使用),则尚未计算布局中的视图大小,以便使用应用后计算的适当大小自动布局约束你必须使用viewDidLayoutSubviews
回调(但你不能在那里添加条纹字段)。
如果您想继续使用STPPaymentCardTextField
,我建议的解决方案是使用固定大小的容器视图,然后使用固定宽度将STPPaymentCardTextField
添加到其中。
另一方面,回答你的问题,没有办法将STPPaymentCardTextField更改为列而不是行,但你可以自己实现它并使用Stripe API Client请求令牌(来自:{ {3}}):
STPAPIClient + STPCardParams :如果您正在收集用户的卡片 使用
STPPaymentCardTextField
或建立自己的信用额度的详细信息 卡形式,您可以使用STPAPIClient类来处理标记 那些细节。首先,组装一个STPCardParams
对象 您收集的信息。然后,使用STPAPIClient
转换它 到STPToken
,然后您可以将其传递到您的服务器。 (注意: 本指南中的示例假设您编写了一个名为的函数 使用网络库的submitTokenToBackend:completion:
将STPToken
发布到您的服务器上。