Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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 如何使用UIViewRepresentable在SwiftUI中更改UITextField的宽度?_Ios_Xcode_Swiftui_Uikit_Uitextfield - Fatal编程技术网

Ios 如何使用UIViewRepresentable在SwiftUI中更改UITextField的宽度?

Ios 如何使用UIViewRepresentable在SwiftUI中更改UITextField的宽度?,ios,xcode,swiftui,uikit,uitextfield,Ios,Xcode,Swiftui,Uikit,Uitextfield,我是IOS新手,正在使用SwiftUI。我使用UIViewRepresentable在SwiftUI中包装UITextField。但问题是: 我无法确定包裹的UITextField的宽度和高度。文本只在一行中写入,并且在写入更多文本时增加UITEXT字段的宽度 这是我的密码: struct SecondWrappedTextField: UIViewRepresentable { @Binding var text: String // Declare a binding value

我是IOS新手,正在使用SwiftUI。我使用UIViewRepresentable在SwiftUI中包装UITextField。但问题是:

我无法确定包裹的UITextField的宽度和高度。文本只在一行中写入,并且在写入更多文本时增加UITEXT字段的宽度

这是我的密码:

struct SecondWrappedTextField: UIViewRepresentable {
    @Binding var text: String // Declare a binding value

    func makeUIView(context: Context) -> UITextField {
        let textField = UITextField()
        textField.delegate = context.coordinator
        textField.textAlignment = .left
        textField.contentVerticalAlignment = .top
        return textField
    }

    func updateUIView(_ uiView: UITextField, context: Context) {
        uiView.text = text // 1. Read the binded
        print("Selcted Text")
        let getSelectedText=UserDefaults.standard.string(forKey: text) ?? ""
        let mainString = text
        let stringToColor = getSelectedText
        let range = (mainString as NSString).range(of: stringToColor)

        let mutableAttributedString = NSMutableAttributedString.init(string: mainString)
        mutableAttributedString.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor.red, range: range)

        
        uiView.attributedText = mutableAttributedString
    }

    func makeCoordinator() -> Coordinator {
        
        return Coordinator(text: $text)
    }

    class Coordinator: NSObject, UITextFieldDelegate,ObservableObject {
        @Binding var text: String
        init(text: Binding<String>) {
            self._text = text
            
        }
        
        func textFieldDidChangeSelection(_ textField: UITextField) {
            DispatchQueue.main.async {
                self.text = textField.text ?? "" // 2. Write to the binded
                let abc = textField // 2. Write to the binded
                print("TEXT")
                print(self.text)
                
              }
        }
    }
    
    
}


SecondWrappedTextField(text: $textNote).multilineTextAlignment(.leading).background(Color.white).frame(width:200,height:200)
struct SecondWrappedTextField:UIViewRepresentable{
@绑定变量文本:字符串//声明绑定值
func makeUIView(上下文:context)->UITextField{
设textField=UITextField()
textField.delegate=context.coordinator
textField.textAlignment=.left
textField.contentVerticalAlignment=.top
返回文本字段
}
func updateUIView(uiView:UITextField,context:context){
uiView.text=text//1.读取绑定的
打印(“选定文本”)
让getSelectedText=UserDefaults.standard.string(forKey:text)?“”
让字符串=文本
让stringToColor=getSelectedText
let range=(作为NSString的主字符串)。range(of:stringToColor)
让mutableAttributedString=NSMutableAttributedString.init(字符串:mainString)
MutableAttributeString.addAttribute(nsAttributeString.Key.foregroundColor,值:UIColor.red,范围:range)
uiView.attributedText=mutableAttributedString
}
func makeCoordinator()->Coordinator{
退货协调员(文本:$text)
}
类协调器:NSObject、UITextFieldDelegate、ObservableObject{
@绑定变量文本:字符串
init(文本:绑定){
self.\u text=文本
}
func textField didchangeSelection(textField:UITextField){
DispatchQueue.main.async{
self.text=textField.text???//2.写入绑定的
让abc=textField//2.写入绑定的
打印(“文本”)
打印(self.text)
}
}
}
}
SecondWrappedTextField(文本:$textNote).multilineTextAlignment(.leading).background(Color.white).frame(宽度:200,高度:200)

很抱歉英文不好。[Image]

这能回答您的问题吗?@Asperi它只固定宽度,但当到达文本字段的边界时,文本不会进入第二行。