申し訳ありませんが、非常に基本的な初心者の質問: UITextField と UITextView があると想像してください。次に、これらの TextField/View の上に配置された透明な UIView を想像してください。これにより、それらに触れても応答しなくなります。
(スワイプやピンチなどではなく)UIViewに触れると、ユーザーが触れたもの(TextFieldやViewなど)が最初の応答者になることを望みます。次のようなコマンドはありますか:
[objectThatWasTouched becomeFirstResponder];
?
これは、次の方法で必要になります。今はUITextViewがファーストレスポンダーになるように設定していますが、触れたものは何でもファーストレスポンダーにしたいです。
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
[super touchesMoved:touches withEvent:event];
UITouch *touch = [touches anyObject];
CGPoint currentPosition = [touch locationInView:self.view];
CGFloat deltaX = fabsf(gestureStartPoint.x - currentPosition.x); // will always be positive
CGFloat deltaY = fabsf(gestureStartPoint.y - currentPosition.y); // will always be positive
if (deltaY == 0 && deltaX == 0) {
[self.view bringSubviewToFront:aSwipeTextView];
[self.view bringSubviewToFront:noteTitle];
[self.view bringSubviewToFront:doneEdit];
[aSwipeTextView becomeFirstResponder];
}
}
そして最後に、ファーストレスポンダーを取り除くために何らかの方法が必要になります。つまり、ファーストレスポンダーが何であるかに依存します。UITextView がタッチされた場合、これは最初のレスポンダーのみを取り除きます。
- (IBAction)hideKeyboard
{
[aSwipeTextView resignFirstResponder];
[self.view bringSubviewToFront:canTouchMe];
}