質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2296閲覧

【SwiftUI】テキストを1秒表示する方法について

lucia0320

総合スコア15

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/10/15 02:35

編集2020/10/15 02:37

いつもお世話になっております。

SwiftUIにおいて
テキストを1秒表示するプログラムを組もうとしているのですが
どうも上手くいきません。

ご指南いただけますと幸いです。

仕様について

1秒表示のボタンを押下すると、
TextのStr変数に"hogehoge"が代入され1秒間表示後、空白に戻すプログラムとなります。

ソース

SwiftUI

1import SwiftUI 2 3 4struct ContentView: View { 5 @State private var Str = "" 6 var body: some View { 7 8 VStack{ 9 Text( self.Str ).font(.system(size: 30, weight: .heavy, design: .default)) 10 .foregroundColor(.blue) 11 12 Button (action: { 13 14 self.Str = "hogehoge" 15 sleep(1) 16 self.Str = "" 17 18 19 }) { 20 21 ZStack{ 22 Rectangle() 23 .fill(Color.white) 24 .frame(width:100,height:40) 25 Rectangle().stroke(Color.black,lineWidth: 1).frame(width:100,height:40) 26 Text("1秒表示").foregroundColor(.black) 27 } 28 29 } 30 31 } 32 33 } 34} 35 36struct ContentView_Previews: PreviewProvider { 37 static var previews: some View { 38 ContentView() 39 } 40} 41

上記プログラムの問題点

何も表示されずボタンが1秒間、押しっぱなしになるだけとなってしまい 
"hogehoge"も表示されなくなってしまいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

Button内にDispatchQueue.main.asyncAfterを仕込み1秒後に空白にすることで実装できました。

Swift

1 Button (action: { 2 self.Str = "hogehoge" 3 DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { 4 self.Str = "" 5 } 6 }) { 7 8 ZStack{ 9 Rectangle() 10 .fill(Color.white) 11 .frame(width:100,height:40) 12 Rectangle().stroke(Color.black,lineWidth: 1).frame(width:100,height:40) 13 Text("1秒表示").foregroundColor(.black) 14 } 15 16 }

投稿2020/10/16 04:27

lucia0320

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問