@@ -153,20 +153,16 @@ - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
153
153
_strokeCount++; // ストロークの回数を増やす
154
154
if ([self .wantedGesture count ] < _strokeCount) {
155
155
// 必要とするジェスチャーを通り過ぎた
156
- // iOS4では"Began"に設定するとずっと"Began"だが、iOS5だと1度だけ"Began"で後は自動的に"Changed"になってしまう
157
- // そのため、「Possible -> Faild / Began -> Canceled」とする
158
- if (self.state == UIGestureRecognizerStatePossible) {
159
- self.state = UIGestureRecognizerStateFailed;
160
- } else {
161
- self.state = UIGestureRecognizerStateCancelled;
162
- }
156
+ // ここが実行される時には
157
+ // iOS4: Began, iOS5: Began/Changed
158
+ // なので、Canclledにする
159
+ self.state = UIGestureRecognizerStateCancelled;
163
160
return ;
164
161
}
165
162
LocalStrokeDirection wantedDirection = [[self .wantedGesture objectAtIndex: _strokeCount - 1 ] intValue ];
166
163
if (wantedDirection != currentDirection) {
167
164
// 必要とするジェスチャーではない
168
- // iOS4では"Began"に設定するとずっと"Began"だが、iOS5だと1度だけ"Began"で後は自動的に"Changed"になってしまう
169
- // そのため、「Possible -> Faild / Began -> Canceled」とする
165
+ // 「Possible ならば Faild」「Began/Changed ならば Canceled」とする
170
166
if (self.state == UIGestureRecognizerStatePossible) {
171
167
self.state = UIGestureRecognizerStateFailed;
172
168
} else {
@@ -176,9 +172,10 @@ - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
176
172
}
177
173
if ([self .wantedGesture count ] == _strokeCount) {
178
174
// 必要とするジェスチャーと一致
179
- // iOS4では"Began"に設定するとずっと"Began"だが、iOS5だと1度だけ"Began"で後は自動的に"Changed"になってしまう
180
- // iOS4:「Possible -> Began」
181
- // iOS5:「Possible -> Began -> Changed」
175
+ // iOS4では"Began"に設定すると"Changed"に設定しない限りずっと"Began"だが、
176
+ // iOS5では1度だけBeganで自動的に"Changed"になってしまう
177
+ // iOS4: Possible -> Began -> Ended
178
+ // iOS5: Possible -> Began -> Changed -> Ended
182
179
self.state = UIGestureRecognizerStateBegan;
183
180
return ;
184
181
}
0 commit comments