Я практикуюсь и читаю на SwiftUI
, и я начинаю с создания простого приложения, в котором вы можете ввести местоположение в TextField
Вид из swiftUI
и затем ввести mkmapview
в SwiftUI
снова отправится в то место, которое я искал.Кажется, я не могу понять, как настроить эту функциональность с помощью моего mkmapview
.
. Кроме того, я даже не могу найти способ отстранить клавиатуру от Textfield
без выполнениянавигация или рендеринг нового вида или удаление вида.
Может кто-нибудь указать мне, как я могу отклонить мою клавиатуру?Я привык к resignFirstResponder()
или didFinishEditing()
.
Кроме того, у кого-нибудь есть какие-либо предложения о том, как назначить функции для MKMapView
из swiftUI
, или я все это неправильно смотрю?
Я подумал, что в обработчике onCommit моего Textfield я бы вызвал функцию, которая могла бы передавать необходимые данные в MapView
и обрабатывать это, но я не смог найти хороший способ сделать это.
struct MainView : View {
@State var text: String = ""
var body: some View {
VStack {
MapView()
.frame(height: UIScreen.main.bounds.height)
.offset(y: 50)
//.edgesIgnoringSafeArea(.top)
SearchField(text: "")
.offset(y: -(UIScreen.main.bounds.height) + 60)
.padding()
}
}
}
struct MapView : UIViewRepresentable {
func makeUIView(context: Context) -> MKMapView {
MKMapView(frame: .zero)
}
func updateUIView(_ view: MKMapView, context: Context) {
let coordinate = CLLocationCoordinate2D(
latitude: 34.011286, longitude: -116.166868)
let span = MKCoordinateSpan(latitudeDelta: 2.0, longitudeDelta: 2.0)
let region = MKCoordinateRegion(center: coordinate, span: span)
view.setRegion(region, animated: true)
}
}
struct SearchField : View {
@State var text: String
@State var showDetails: Bool = false
var body: some View {
VStack {
RoundedRectangle(cornerRadius: 30).frame(width: 300, height: 40)
.foregroundColor(.white)
.offset(y: 55)
TextField($text, placeholder: Text("City, State, or Address"), onEditingChanged: { body in
print(body)
}, onCommit: {
print(self.text)
})
.padding()
.offset(x: 50)
}
}
}
* Редактировать Примечание. Мой код выше работает, он создает полноэкранный вид карты с текстовым полем, текстовое поле принимает текст и обновляет его состояние.Мой вопрос о том, как перейти от этого к получению функциональности к просмотру карты и скрыть мою чертову клавиатуру по возвращении