我有一个 UIView,我试图在屏幕上上下移动,但是我只想让它平移,这样当视图处于正常位置 (0, 0) 时,您就无法向下拖动视图
我尝试检测识别器的中心何时不是视图高度的一半,但是视图是不可移动的,并且中心始终是高度的一半(在本例中为 230)。
有任何想法吗?
- (IBAction)panDetected:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:self.view];
NSLog(@"\ncenter.y: %f\ntranslation.y: %f\n", recognizer.view.center.y, translation.y);
if (recognizer.view.center.y > ([[UIScreen mainScreen] bounds].size.height - 20)/2) {
return;
}
recognizer.view.center = CGPointMake(recognizer.view.center.x,
recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}
不要手动计算这些点是否在视图的边界内,而是使用CGRectContainsPoint(rect, point)
。这对我有用,我喜欢它,因为它更短且更具可读性:
func handlePan(pan: UIPanGestureRecognizer) {
switch pan.state {
case .Began:
if CGRectContainsPoint(self.pannableView.frame, pan.locationInView(self.pannableView)) {
// Gesture started inside the pannable view. Do your thing.
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)