ОК, нет проблем, я уже решил свой вопрос.
Способ состоит в том, чтобы переопределить сенсорные методы в кнопках, например, так:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
touchMoved = NO;
[[self superview] touchesBegan:touches withEvent:event];
[super touchesBegan:touches withEvent:event];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
touchMoved = YES;
[[self superview] touchesMoved:touches withEvent:event];
[super touchesMoved:touches withEvent:event];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if (!touchMoved) [super touchesEnded:touches withEvent:event];
}
Переменная touchMoved
предназначенный для отслеживания, было ли это прямое касание кнопки или касание, чтобы перетащить суперпредставление.Поскольку я использую UIControlEventTouchUpInside
, то он работает нормально, если я отключаю прикосновения закругленными, когда он отслеживает движение касания.