在AcaniUsers
中,我ThumbView : UIView
在UITableView
. 都有thumbViews
一个宽度kThumbSize
。如何检测触摸是否在它们开始的同一视图内结束?
问问题
4338 次
2 回答
9
在您使用的视图扩展中;
斯威夫特 4:
open override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesEnded(touches, with: event)
guard let touchPoint = touches.first?.location(in: self) else { return }
guard self.bounds.contains(touchPoint) else { return }
// Do items for successful touch inside the view
}
于 2018-08-28T09:37:25.647 回答
3
以下工作,但我不确定这是否是最好的方法。不过我想是的。
由于所有thumbViews
的宽度都为kThumbSize
,只需检查实例的 x 坐标(假设)touchesEnded
是否小于或等于。这意味着触摸在. 无需检查 y 坐标,因为如果触摸垂直移动,包含、 的 滚动和触摸将被取消。locationInView
UITouch
self.multipleTouchEnabled = NO
kThumbSize
thumbView
tableView
thumbViews
在ThumbView : UIView
(其实例是 a 的子视图UITableView
)中执行以下操作:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touchesEnded %@", touches);
CGPoint touchPoint = [[touches anyObject] /* only one */ locationInView:self];
if (touchPoint.x >= 0.0f && touchPoint.x <= kThumbSize) {
[(ThumbsTableViewCell *)self.superview.superview thumbTouched:self];
}
}
要一次只注册一个触摸,thumbView
您可能还想self.exclusiveTouch = YES;
在.init
ThumbView
于 2011-04-23T02:44:26.337 回答