ここで私はUIButtonを使用しました(これは私のアプリケーションの1つですでに使用されているため、コード全体を再度記述する必要はありません)
[cropRectangleButton addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragInside];
これcropRectangleButton
は1つのUIButtonであり、imageMoved:withEvent:
メソッドは次のとおりです。
- (IBAction) imageMoved:(id)sender withEvent:(UIEvent *)event
{
CGPoint point = [[[event allTouches] anyObject] locationInView:self.view];
CGPoint prev = lastTouchDownPoint;
lastTouchDownPoint = point;
CGFloat diffX = point.x - prev.x;
CGFloat diffY = point.y - prev.y;
UIControl *button = sender;
CGRect newFrame = button.frame;
newFrame.origin.x += diffX;
newFrame.origin.y += diffY;
scrollView.contentSize = CGSizeMake(2*scrollView.frame.size.width, scrollView.frame.size.height);
[scrollView scrollRectToVisible:newFrame animated:YES];
button.frame = newFrame;
}
ここでは、scrollViewがスクロールしているかどうかをテストするのが非常に狭いため、scrollViewのcontentSizeを変更します。そのコード行は必要ありません。
また、ボタンを左にドラッグすると、scrollViewも自動的にボタンフレームにスクロールされ、ボタン全体が表示されます。UIViewを使用してこれを実装してみてください。不可能な場合は、ビューに1つの透明なUIButtonを配置して、ビューを完全にカバーします。引っ張る :)