ノブ付きのコントロールを作成しました。このノブは、x軸とy軸に沿ってのみ移動可能である必要があります。
私はすでに次のメソッドを実装しています。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
1つの軸に沿った動きを制限することはで実装する必要があることを私は知っていtouchMoved
ます。たとえばx軸に沿った動きを制限すると、すべてが期待どおりに機能します。しかし、y軸の移動も有効にするにはどうすればよいですか?2番目の軸を有効にすると、ノブの動きは この2つの軸だけに制限されません。ここにtouchMoved
実装の一部があります:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
CGPoint currentLocation = [touch locationInView:self.view];
CGPoint centerPoint = _triggerCap.center;
CGPoint selectionTriggerCenter = _selectionTrigger.center;
double distance = ({double d1 = centerPoint.x - selectionTriggerCenter.x, d2 = centerPoint.y - selectionTriggerCenter.y; sqrt(d1 * d1 + d2 * d2); });
if (distance < 100.0) {
if (fabsf(selectionTriggerCenter.y - currentLocation.y) > 5) {
centerPoint.y = currentLocation.y;
_triggerCap.center = centerPoint;
誰かが私にこれらの2つの軸だけに沿った動きを可能にする方法のヒントを教えてもらえますか?