teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

途中までは自己解決したので修正

2019/06/09 03:38

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,10 +1,27 @@
1
1
  現在Viewの中にtextFieldとtextViewがあります
2
2
  textViewがタップされたらViewをスクロールさせたいのですが
3
3
 
4
- 今のコードでは↓の条件しかviewがスクロールしません
4
+ 今のコードでは1度textViewがタッチされると以降textFieldviewがスクロールしてしします。
5
+ 原因は
6
+ ```swift
7
+ func isTouch(touches: Set<UITouch>, view:UIView) -> Bool{
5
- 一旦、textFieldをタップしキーボードを落としてから、textViewをタップ
8
+ for touch: AnyObject in touches {
9
+ let t: UITouch = touch as! UITouch
6
- 又は、textViewをタップしキーボードの地球儀マークを押す
10
+ if t.view?.tag == view.tag {
11
+ return true
12
+ } else {
13
+ return false
14
+ }
15
+ }
16
+ return false
17
+ }
18
+ ```
7
19
 
20
+ ここででviewがスクロールする処理が1度解除されると以降textFieldにも適用されてしまうと考えていますが対処の仕方が分からない状態です
21
+
22
+
23
+
24
+
8
25
  ```swift
9
26
  import UIKit
10
27
 
@@ -18,6 +35,8 @@
18
35
  super.viewDidLoad()
19
36
  textView.delegate = self
20
37
  textField.delegate = self
38
+ textView.tag = 123
39
+
21
40
  }
22
41
 
23
42
 
@@ -64,9 +83,30 @@
64
83
  self.view.transform = CGAffineTransform.identity
65
84
  }
66
85
  }
86
+
87
+
67
88
 
68
89
 
90
+ override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
69
- func textViewDidBeginEditing(_ textView: UITextView) {
91
+ if isTouch(touches: touches, view: textView) {
70
- self.configureObserver()
92
+ self.configureObserver()
93
+
94
+
95
+ }
71
96
  }
97
+
98
+ func isTouch(touches: Set<UITouch>, view:UIView) -> Bool{
99
+ for touch: AnyObject in touches {
100
+ let t: UITouch = touch as! UITouch
101
+ if t.view?.tag == view.tag {
102
+ return true
103
+ } else {
104
+ return false
105
+ }
106
+ }
107
+ return false
108
+ }
109
+
110
+
111
+
72
112
  ```