关于UIView布局的建议

时间:2012-09-16 04:53:27

标签: iphone ios uiview custom-view uipangesturerecognizer

我想创建一个4x4的正方形网格(每个正方形由一些空格隔开)。当用户将手指从一个正方形平移到另一个正方形时,我想突出显示正方形并在正方形之间画线(以显示它们已连接)。

我创建了一个GridView自定义UIView和16个子GridElement自定义UIViews,布局为4x4,我想使用平移手势来选择正方形和绘制线。这是正确的方法吗?

感谢您的回复。所以我尝试了你的建议。现在,我已经制作了UIControl的单独网格方块子类,并且包含视图是其操作的目标。我的包含视图是UIView的子类。包含视图接收UIControlEventTouchDown事件,但不接收UIControlEventTouchDragExit或(回车)

- (void) sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event {
    [super sendAction:action to:target forEvent:event]; 
}

- (void) sendActionsForControlEvents:(UIControlEvents)controlEvents {
    [super sendActionsForControlEvents:controlEvents];
}

- (BOOL) beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
    return YES;
}

- (BOOL) continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
    return YES;
}

在我的ContainerView中我有

[gridElement addTarget:self action:@selector(elementSelected:)forControlEvents:UIControlEventTouchDragEnter];

1 个答案:

答案 0 :(得分:2)

只有在手指移动到足以被视为平移时,才会选择第一个方格 - 您可能需要添加另一个识别器来拾取第一个触摸。

如果我这样做,我会采用不同的方法。您可以使单个网格正方形UIControl子类,并使包含视图成为其操作的目标。 UIControls已经响应了诸如内部触摸,输入的触摸拖动,内部触摸等事件。您可以将这些事件传递到包含视图,并在用户移动手指时适当地突出显示/绘制线条。

相关问题