Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SwiftUI如何实现VKPinCodeView_Ios_Swift_Xcode_Swiftui - Fatal编程技术网

Ios SwiftUI如何实现VKPinCodeView

Ios SwiftUI如何实现VKPinCodeView,ios,swift,xcode,swiftui,Ios,Swift,Xcode,Swiftui,我已经在我的SwiftUI项目中安装了VKPinCodeView依赖项,但是我无法在我的视图文件中实现它,并且我在任何地方都找不到VKPinCodeView的任何文档。以下是回购协议: 导入VKPinCodeView RegisterOTPView.swift struct RegisterOTPView: View { var body: some View { ScrollView { VKPinCodeView() }

我已经在我的SwiftUI项目中安装了VKPinCodeView依赖项,但是我无法在我的视图文件中实现它,并且我在任何地方都找不到VKPinCodeView的任何文档。以下是回购协议:

导入VKPinCodeView

RegisterOTPView.swift

struct RegisterOTPView: View {
    var body: some View {
        ScrollView {
            VKPinCodeView()
        }
    }
}
回购协议中仅提及:

override func viewDidLoad() {
   super.viewDidLoad()
        
   let pinView = VKPinCodeView()
   pinView.translatesAutoresizingMaskIntoConstraints = false
   view.addSubview(pinView)
   pinView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 40).isActive = true
   pinView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -40).isActive = true
   pinView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
   pinView.heightAnchor.constraint(equalToConstant: 50).isActive = true
   pinView.onSettingStyle = { UnderlineStyle() }
   pinView.becomeFirstResponder()
}

如果我没有弄错,这是故事板架构,我如何在SwiftUI中使用它?谢谢。

vkpinodeview
是一个
ui视图
,因此您不能在SwiftUI中直接使用它。它必须包装在一个
UIViewRepresentable

以下是最低设置:

struct VKPinCodeViewWrapper : UIViewRepresentable {
    func makeUIView(context: Context) -> VKPinCodeView {
        let view = VKPinCodeView()
        view.onSettingStyle = { UnderlineStyle() } //taken from your example code
        view.becomeFirstResponder() //taken from your example code
        return view
    }
    
    func updateUIView(_ uiView: VKPinCodeView, context: Context) {
        //
    }
}

struct RegisterOTPView: View {
    var body: some View {
           VKPinCodeViewWrapper()
    }
}

我还没有使用这个特定的库,所以可能有一些事情需要考虑或改变关于<代码>中的设置:MauuiVIEW//CaseVS在 UpDATUIVIEW//C>中所做的事情,比如成为第一个响应者。可能需要一些实验

更多关于UIViewRepresentable的阅读:

谢谢您的回答!或者,您对实现OTP pin输入视图还有其他建议吗?此方法不起作用吗?下划线pin视图显示是可行的,但键入时,它显示为空,输入处没有数字。我刚刚更新了我的示例,以删除我从您的原始代码中获取的
滚动视图。这里不需要它,它导致视图被推到范围之外。我刚刚在模拟器上进行了测试,这个更新的代码对我来说很好。