UITapGestureRecognizerの代わりにUILongPressGestureRecognizerを親ビューに付けて、好みのプロパティを設定します。選択を追跡して対応する方法は、適切な方法でuserTappedOnLinkメソッドを実装することです。この方法は、ジェスチャ認識装置が起動され、認識装置の状態を追跡することによって何が起きているかを知っているときに、短時間で多くの時間呼び出されます。
UIViewサブクラスを作成し、select、deselectなどのメソッドを作成し、それぞれのビュープロパティをカスタマイズします。それから、UIViewサブクラスを選択または選択解除するだけで、それは親ビューのポイントを返すUIGestureRecognizerメソッドで簡単に実行でき、タッチポイントが特定のサブビューフレームの内側にあるかどうかを確認しながらサブビューを繰り返すことができます。
- (IBAction)userTappedOnLink:(UIGestureRecognizer*)sender
{
switch (sender.state)
{
case UIGestureRecognizerStateBegan:
{
CGPoint touchPoint = [sender locationInView:self.parentView];
for (UIView *subView in [self.parentView subViews)
{
if (CGRectContainsPoint(subView.frame, tapPoint))
{
self.activeSubView = self.subview;
break;
}
}
[self.activeSubView select];
case UIGestureRecognizerStateChanged:[self.activeSubView doNothing];; break;
case UIGestureRecognizerStateEnded:[self.activeSubView deSelect]; self.activeSubView = nil; break;
}
}
https://github.com/mta452/UIView-TouchHighlighting –