テキストビューの指定された部分にあるタッチにのみ応答したい UITextView の実装に取り組んでいます。
ビューにジェスチャ認識機能が接続されていますが、ビューが最初のレスポンダーになるように設定するまでは正常に機能します。これは、ビュー内のタップのポイントが X と Y の値よりも大きい場合に行います。
- (IBAction)textViewTapped:(UIGestureRecognizer *)sender {
CGPoint point = [sender locationOfTouch:0 inView:self.view];
NSLog(@"x ix %f, y is %f", point.x, point.y);
if (point.x > 96 && point.y > 106)
[self.myTextView becomeFirstResponder];
}
問題は、ファーストレスポンダーに設定され、そのテキストビューの外側をタップして辞任すると、ジェスチャ認識メソッドが二度と呼び出されないことです。ファーストレスポンダを設定していない領域をタップすると、タップした回数だけメソッドが呼び出されます。ファーストレスポンダを設定して辞任すると、最初の辞任後に応答しません。
- (IBAction)viewTapped:(UIGestureRecognizer *)送信者 { [self.view endEditing:YES]; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(textViewTapped:)]; [self.myTextView addGestureRecognizer:タップ]; NSArray *gestures = [self.myTextView ジェスチャレコグナイザー]; NSLog(@"%d 個のレコグナイザーを取得しました", [ジェスチャー数]); }
物事を試すだけで、辞任するたびに新しいジェスチャー認識エンジンを追加すると、それは機能しますが、明らかに良い解決策ではありません.
何かご意見は?