Если вы хотите узнать представление, с которого началось касание (на какое представление пользователь указал пальцем), вы можете прочитать любой из элементов касания, возвращаемых в NSSet
, например так:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
NSInteger viewTag = [[[touches anyObject] view] tag];
//Check your view using the tags you've set...
}
Однако, даже когда палец перемещается по экрану, это свойство view
будет возвращать ТОЛЬКО представление, к которому было первоначально приложено, а не представление, которое в данный момент находится под пальцем. Для этого вам нужно будет отслеживать координаты текущего касания и определять, в какой вид оно попадает, возможно, так:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view];
//If all your views are collected as an array
for(UIView *view in views) {
if (CGRectContainsPoint([view frame], point))
{
//Bingo
}
}
}
Ключ к успеху в этом заключается в том, чтобы убедиться, что вы обращаетесь с координатами к нужным представлениям, поэтому не забудьте правильно вызвать locationInView:
и CGRectContainsPoint()
со значениями, которые соответствуют иерархии представлений вашего приложения и месту размещения этого кода (т.е. Вид, ViewController и т. д.)
Надеюсь, это поможет!
person
devunwired
schedule
09.06.2011