質問編集履歴

1

以前と異なる質問形式にした。

2017/08/29 13:30

投稿

mokoporon
mokoporon

スコア26

test CHANGED
@@ -1 +1 @@
1
- Buttonを押すことでの文章が消え、次の章が現れるようにする方法。
1
+ Buttonを押すことで、TextViewの文章を一字ずつ表示する方法について
test CHANGED
@@ -1,39 +1,87 @@
1
+ 以前teratailに投稿されていた類似の質問を参考に以下のコードを書き、TextViewのクラスを紐付けしたのち、ビルド画面を起動すると、TextViewに記載してある文章が一文字ずつ流れる。
2
+
3
+
4
+
1
- どによあるような、Buttonを押すこと前の文章が消え次の文章が現れるようにする方法が分かりません。Button(moji)を押してLabelに文章を表示させることきますが、以下コードだと、" "内に囲まれた文章が同時提示されてます
5
+ しかし、ビルド画面を起動した直後に文章をアニメション表示するのではなく、Buttonで制御し、Buttonを押ことでTextViewの文章を流れるよう加工い。
6
+
7
+
8
+
9
+ この場合、どのようなコードを追加もしくは訂正すればよいでしょうか。
10
+
11
+
2
12
 
3
13
 
4
14
 
5
15
  ```Swift
6
16
 
7
- @IBAction func moji(_ sender: Any) {
17
+ import UIKit
8
18
 
9
- let myLabel = UILabel()
10
19
 
11
- let myLabel2 = UILabel()
12
20
 
13
- myLabel.text = "私の名前は○○です!"
21
+ class Timertext: UITextView {
14
22
 
15
- myLabel2.text = "どうぞよろしくお願いいたします"
23
+
16
24
 
17
- myLabel.frame = CGRect(x: 30, y: 100, width:500, height:100)
25
+ @IBAction func alpha(_ sender: Any) {
18
26
 
27
+ print(Timertext())
28
+
29
+ }
30
+
31
+
32
+
33
+ var titlestr :String!
34
+
35
+
36
+
37
+ var idx = 0
38
+
39
+ var flgRun = false
40
+
41
+
42
+
19
- view.addSubview(myLabel)
43
+ override func draw(_ rect:CGRect) {
44
+
45
+ let timer = Timer.scheduledTimer(timeInterval: 0.05, target: self, selector: #selector(tickTimer(_:)), userInfo: nil, repeats: true)
20
46
 
21
47
 
22
48
 
23
- myLabel2.frame = CGRect(x: 30, y: 100, width:500, height:100)
49
+ titlestr = self.text
24
50
 
25
- view.addSubview(myLabel2)
51
+ self.text = ""
52
+
53
+
54
+
55
+ timer.fire()
26
56
 
27
57
  }
28
58
 
59
+
29
60
 
61
+ func tickTimer(_ timer: Timer) {
62
+
63
+ if idx < titlestr.characters.count {
64
+
65
+ self.text = titlestr.substring(to: titlestr.index(titlestr.startIndex, offsetBy: idx))
66
+
67
+
68
+
69
+ idx += 1
70
+
71
+
72
+
73
+ } else {
74
+
75
+ self.text = titlestr
76
+
77
+ timer.invalidate()
78
+
79
+ flgRun = false
80
+
81
+ }
82
+
83
+ }
84
+
85
+ }
30
86
 
31
87
  ```
32
-
33
-
34
-
35
- そもそも、もっと効率的な書き方があるような気もしますが…。初心者で、以上の書き方以外に方法が思いつきません。
36
-
37
-
38
-
39
- 訂正箇所・根本的に間違っている箇所などありましたら、ご指摘お願いいたします。