如何在 iOS 7 中检测水龙头的位置

Posted

技术标签:

【中文标题】如何在 iOS 7 中检测水龙头的位置【英文标题】:How to detect the location of taps in ios 7 【发布时间】:2013-12-25 22:32:31 【问题描述】:

我有一个带有半表视图(底部,320x289)和半地图视图(顶部,320,289)的视图控制器。如何检测水龙头的位置?

目前我的点击代码如下所示——点击时,它会隐藏导航栏,以便地图获得一些额外的空间。但是,因为它没有检测到点击的位置,所以当我点击 tableview 时,我无法进入我的 table view 控制器。

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideShowNavigation)];
tap.numberOfTapsRequired = 1;
[self.view addGestureRecognizer:tap];

理想情况下,我想检测水龙头的位置。如果在顶部点击(如果高度 289px),则它将 segue 推送到表格视图控制器中。

- (void) hideShowNavigation:(id)sender

    [self.navigationController setNavigationBarHidden:!self.navigationController.navigationBarHidden];

    [self hidesBottomBarWhenPushed];


这是整个代码:

- (void)viewDidLoad

    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.navigationController.navigationBar.translucent = YES;
    self.automaticallyAdjustsScrollViewInsets = YES;

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideShowNavigation:)];
        tap.numberOfTapsRequired = 1;
        [self.view addGestureRecognizer:tap];    


- (void) hideShowNavigation:(id)sender

    CGPoint = [sender locationInView:self.view];
    CGFloat y = location.y;

    if(y<=289)
        [self.navigationController setNavigationBarHidden:!self.navigationController.navigationBarHidden];

        [self hidesBottomBarWhenPushed];
    

【问题讨论】:

CGPoint pt = [gRec locationInView:gRec.view]; 【参考方案1】:

在您的选择器中:

CGPoint location = [sender locationInView:self.view];
CGFloat x = location.x;
CGFloat y = location.y;

【讨论】:

好的,谢谢!我认为现在检测到水龙头位置。但是,我的问题是当我点击时,点击直接进入@selector 方法(hideShowNavigation)。在此方法中,我无法使用为 Table View 编写的标准代码,它是 Table View Controller 的一部分。换句话说,如何让控制器使用已经编写的标准代码推送到表视图控制器?还是我必须为新的表格视图控制器编写自己的代码? 刚刚更新了代码供您查看!非常感谢您的宝贵时间! 你有没有尝试过类似的东西:if(y&lt;=289) [self.navigationController setNavigationBarHidden:!self.navigationController.navigationBarHidden]; [self hidesBottomBarWhenPushed]; else [self performSegueWithIdentifier:@"SegueToYourTableViewController" sender:self]; 这很好用。我对这件事真的很陌生,不熟悉 performSegueWithIdentifier 方法......我还需要更多练习!

以上是关于如何在 iOS 7 中检测水龙头的位置的主要内容,如果未能解决你的问题,请参考以下文章

如何检测水龙头的数量

如何检测从长按开始的水龙头?

SwiftUI - 在禁用的 SecureField 中检测水龙头?

iOS:如何检测视图周围的子视图位置

如何检测用户当前位置授权并在ios中重新加载数据?

如何在 iOS 中使用核心图像准确检测图像中的人脸?