[英]Move UIImage along x- and y-axis
我用旋鈕創建了一個控件。 該旋鈕應該僅沿x軸和y軸移動。
我已經實現了以下方法:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
我知道,必須在touchMoved
實現限制沿一個軸的移動。 當我限制沿x軸的移動時,一切都會按預期進行。 但是,如何同時使y軸運動呢? 當啟用所述第二軸,所述旋鈕的移動並不局限於僅用於這種兩軸。 這是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;
有人可以給我一個提示,如何僅允許沿這兩個軸的運動嗎?
我想到的最快的方法是,
在touchesBegan
,記錄第一次在旋鈕內的觸摸的位置。 然后,在touchesMoved
,等到與第一次觸摸之間的距離至少達到某個最小距離(也許15像素-播放並查看效果最好)。 檢查是否在第一次觸摸時沿x方向或y方向更遠。 這將確定在當前觸摸順序的其余部分中應限制在哪個軸運動。 設置一個標志以指示該軸,然后從此開始,將已經用於限制運動的代碼限制在單個軸上。 在touchesEnded
或旋鈕返回到距軸的交點一定距離內時重置標志。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.