gpt4 book ai didi

ios - Swift iOS Stripe - 当到期或 CVV 字段处于事件状态且卡号字段为空时如何关闭键盘

转载 作者:行者123 更新时间:2023-11-28 07:31:36 25 4
gpt4 key购买 nike

我有 1 个接受卡号、到期日期和 cvv 的 Stripe 文本字段。我在 View 上还有一个点击手势识别器来关闭键盘。

如果卡号为空或填写不当(例如 4 位数字而不是 16 位数字),我按下到期日期或 cvv 字段,然后按下文本字段外部以关闭键盘,如果它立即关闭则跳转到卡号字段,然后我必须再次按下文本字段外部以关闭键盘。本质上,我必须在键盘外部按两次才能关闭它,这看起来像是一个错误。

但是,如果正确填写了卡号,然后我将执行相同的过程,我只需按一次文本字段的外部即可关闭键盘。

STPPaymentCardTextField 似乎有一个默认值,它表示“如果卡号无效并且用户试图从过期日期或 cvv 字段中关闭键盘,则不要关闭键盘,首先跳转到卡号,然后才从那里关闭它”

即使卡号填写不当,如何立即从到期日期或 cvv 字段中关闭键盘?

import Stripe

let paymentTextField: STPPaymentCardTextField = {
let stp = STPPaymentCardTextField()
stp.translatesAutoresizingMaskIntoConstraints = false
return stp
}()

override func viewDidLoad() {
super.viewDidLoad()

paymentTextField.delegate = self

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
view.addGestureRecognizer(tapGesture)
}

@objc fileprivate func dismissKeyboard() {
view.endEditing(true)
}

最佳答案

我不知道 Stripe 是如何工作的,但试试这个:

override func viewDidLoad() {
super.viewDidLoad()

paymentTextField.delegate = self

setGestureRecognizerDelegate()
}

private func setGestureRecognizerDelegate() {
let tapOnEmptyPlaceGestureRecognizer = UITapGestureRecognizer(
target: self,
action: #selector(tapOnEmptyPlaceGestureCaptured(gesture:)))
tapOnEmptyPlaceGestureRecognizer.delegate = self
view.addGestureRecognizer(tapOnEmptyPlaceGestureRecognizer)
}

@objc private func tapOnEmptyPlaceGestureCaptured(gesture: UITapGestureRecognizer) {
let touchPoint = gesture.location(in: view)

// Make next code for all your textFields
if !paymentTextField.point(inside: touchPoint, with: nil) {
paymentTextField.resignFirstResponder()
}
}

也不要忘记让您的 UIViewController 成为 UIGestureRecognizerDelegate

关于ios - Swift iOS Stripe - 当到期或 CVV 字段处于事件状态且卡号字段为空时如何关闭键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54500335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com