[英]iphone/ipad - parent UIView is blocking touches from getting to subviews - why?
[英]iPhone - UIView inside UIScroller… view not passing touches to parent
我在UIScroller中有一個UIView(叫它myView)。
myView具有可以拖動的元素。
當觸摸這些元素之一時,滾動條將被鎖定,以防止整個滾動。 元素具有ExclusiveTouch = YES。 我只需要觸摸myView就可以滾動整個內容。
我曾使用touchesBegan,touchesMoved等進行此操作,但是我正在將此類轉換為手勢。 新類具有兩個手勢:UIPanGestureRecognizer和UITapGestureRecognizer。 就像是:
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]
initWithTarget:self action:@selector(drag:)];
[panGesture setMaximumNumberOfTouches:1];
[panGesture setDelegate:self];
[myView addGestureRecognizer:panGesture];
[panGesture release];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(tapAdd:)];
[singleTap setDelegate:self];
[singleTap setNumberOfTapsRequired:1];
[myView addGestureRecognizer:singleTap];
[singleTap release];
當此類使用舊方法(touchesBegan等)時,我只是使用類似
[self.nextResponder touchesBegan: touches withEvent:event];
但是我該如何使用手勢呢? 我的意思是,在我的情況下,UIPanGestureRecognizer將運行一個名為drag的方法,並且該方法接收到一個手勢...我如何將觸摸轉發給它的滾動父,以便整個滾動?
謝謝
您可能會設置一個協議來代表您的視圖。
在標題中,設置
@protocol MyViewDelegate
- (void)drag;
@end
@interface ....... {
id <MyViewDelegate> delegate;
}
@property (nonatomic, assign) id delegate;
@end
您必須在實現文件中合成delegate
。 在滾動器類中,您將必須使用協議
@interface Scroller ....... <MyViewDelegate> {
在該實現文件中,確保放入myView.delegate = self;
初始化時添加- (void)drag {
然后在其中執行所需操作。 如果您需要更多信息,則當然可以將協議中的方法設置為- (void)dragWithEvent:(UIEvent *)event
東西。
然后,在myView中調用drag:
時,可以通過調用[self.delegate dragWithEvent:event];
將其轉發到協議方法[self.delegate dragWithEvent:event];
。
我知道,這可以使您的滾動條滾動一些,但是它會根據您的需要轉發消息。
也可以將手勢添加到滾動條而不是myView,然后轉發touchesBegan
方法中的所有觸摸並讓滾動條直接處理
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.