而不是總是從pointInside不會回來,請檢查點相交的任何您的UIButton子視圖 - 如果它確實返回YES。
- (BOOL) pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
for (UIView* sv in self.subviews)
{
if (CGRectContainsPoint(sv.frame, point))
return YES;
}
return NO;
}
編輯:另一種解決方案
每您的評論你想用戶開始與子視圖按鈕中的一個向下觸摸滾動的UITableView。爲了使這個工作,你需要使包含你的按鈕的UIView成爲UITableView的子視圖。
通過這樣做UIView將開始與UITableViewCells一起滾動。爲防止出現這種情況,您需要在發生滾動時調整框架,或者使用約束將其鎖定到位。
- (void) viewDidLoad
{
[super viewDidLoad];
// instantiate your subview containing buttons. mine is coming from a nib.
UINib* n = [UINib nibWithNibName: @"TSView" bundle: nil];
NSArray* objs = [n instantiateWithOwner: nil options: nil];
_tsv = objs.firstObject;
// add it to the tableview:
[self.tableView addSubview: _tsv];
}
// this is a UIScrollView delegate method - but UITableView IS a UIScrollView...
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
[scrollView bringSubviewToFront:_tsv];
CGRect fixedFrame = _tsv.frame;
fixedFrame.origin.y = 100 + scrollView.contentOffset.y;
_tsv.frame = fixedFrame;
}
爲什麼不能將該視圖設置爲tableHeaderView? –