2016-06-09 3 views
0

Я добавляю TextField к моему представлению, используя шаги, показанные в документах Stripe. Но когда я загружаю симулятор или запускаю приложение на своем телефоне, текстовое поле отключается, а текстовое поле CVC не отображается на мобильном устройстве. Есть ли способ изменить макет текстового поля, чтобы иметь детей (номер карты, дату опыта и номер CVC), все настроенные столбцами, а не строками?Изменение макета STPPaymentCardTextField

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

Проблема, с которой вы столкнулись, вероятно, связана с использованием автоматической компоновки. Если вы используете автоматический макет (который используется дефектом в новых проектах) при вызове метода viewDidLoad, размеры представления в макете еще не рассчитаны, чтобы использовать правильные размеры, рассчитанные после применения ограничений автоматического макета, должен использовать обратный вызов viewDidLayoutSubviews (но вы не можете добавить туда поле Stripe).

Мое предлагаемое решение, если вы хотите продолжать использовать STPPaymentCardTextField, заключается в использовании вида контейнера фиксированного размера, а затем добавьте STPPaymentCardTextField к нему с фиксированной шириной.

С другой стороны, отвечая на ваш вопрос, нет способа изменить STPPaymentCardTextField на столбцы вместо строк, но вы можете сделать свою собственную реализацию и запросить токен, используя Stripe API Client (от: https://stripe.com/docs/mobile/ios/custom):

STPAPIClient + STPCardParams: Если вы собираете карты подробности ваших пользователей с помощью STPPaymentCardTextField или создать свою собственную кредитные форму карты, вы можете использовать класс STPAPIClient для обработки tokenizing этих деталей , Сначала соберите объект STPCardParams с полученной вами информацией . Затем используйте STPAPIClient для преобразования этого в STPToken, который затем можно передать на ваш сервер. (Примечание: примеры в этом руководстве предполагают, что вы написали функцию под названием submitTokenToBackend:completion:, которая использует сетевую библиотеку до . Отправьте свой STPToken на ваш сервер).

Смежные вопросы