簡體   English   中英

從UITableView的UIView“竊取”觸摸

[英]UIView “stealing” touch from UITableView

我有一個自動完成表,當用戶在搜索欄按鈕項中鍵入任何內容時,都會為其創建框架。 問題是,當用戶在表視圖或表的外部觸摸時,我希望能夠將其關閉,因此自然地,我在主視圖中添加了輕按觸摸識別器。

問題是,視圖“劫持”表中的觸摸,因此當您嘗試觸摸表時,它會將其關閉(這是很有意義的,因為表是該UIView的子視圖)

任何人都有智能解決方案嗎? (我最初的想法是將UITableView放在視圖窗口頂部的新窗口中,但是如果有更優雅的方法,我希望這樣做)

也許你可以嘗試

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

    if ([touch.view.superview.superview isKindOfClass:[UITableView class]]) return NO;


    else return YES;
}

//初始化識別器

UIGestureRecognizer *gestureRecognizer;
gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[gestureRecognizer setCancelsTouchesInView:NO];
[self.view addGestureRecognizer:gestureRecognizer];
self.tapRecognizer = (UITapGestureRecognizer *)gestureRecognizer;
gestureRecognizer.delegate = self;
[gestureRecognizer release];

並在手勢中放一些東西

- (void)handleTap:(UITapGestureRecognizer *)recognizer {

}

希望能幫助到你 :)

也許你可以嘗試

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;

用於行用戶的表視圖選擇的方法將感覺用戶選擇了該值,並且

對於表外,請使用uiviews touch begin方法並檢查rect CGRectContainsPoint(<#CGRect rect#>,<#CGPoint point#>)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM