{"url":"https://gouf.hatenablog.com/entry/2020/02/18/213426","categories":["Q&A","iOS","Swift"],"title":"Q. TextField \u5165\u529b\u306e\u6539\u884c\u306b\u5408\u308f\u305b\u3066\u9ad8\u3055\u3092\u81ea\u52d5\u8abf\u6574\u3057\u305f\u3044","blog_url":"https://gouf.hatenablog.com/","provider_name":"Hatena Blog","author_name":"innocent-zero","version":"1.0","height":"190","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgouf.hatenablog.com%2Fentry%2F2020%2F02%2F18%2F213426\" title=\"Q. TextField \u5165\u529b\u306e\u6539\u884c\u306b\u5408\u308f\u305b\u3066\u9ad8\u3055\u3092\u81ea\u52d5\u8abf\u6574\u3057\u305f\u3044 - \u30d6\u30ed\u30b0\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","width":"100%","published":"2020-02-18 21:34:26","description":"A. \u300cStackOverflow \u306e\u56de\u7b54\u300d\u3092\u53c2\u8003\u306b\u3001 UIViewRepresentable, View \u306e\u5b9f\u88c5\u3092\u3059\u308b import SwiftUI import Combine final class UserData: BindableObject { let didChange = PassthroughSubject<UserData, Never>() var text = \"\" { didSet { didChange.send(self) } } init(text: String) { self.text = text } } struct MultilineTextView\u2026","author_url":"https://blog.hatena.ne.jp/innocent-zero/","type":"rich","image_url":null,"blog_title":"\u30d6\u30ed\u30b0","provider_url":"https://hatena.blog"}