gpt4 book ai didi

objective-c - iOS 将 tapGesture 添加到多个 View

转载 作者:IT王子 更新时间:2023-10-29 08:13:56 25 4
gpt4 key购买 nike

我在主视图中定义了多个 View 。我想为所有这些 View 添加单击手势。下面是我编写的代码,但这会向我添加的最后一个 View 注册一个点击手势。所以在下面的代码中,tap 只为 messagesView 注册,而不为其他 View 注册。我有两个问题:

  1. 如何将同一个 tapGesture 注册到多个 View ?

  2. 假设我可以正常工作,现在这些 View 中的所有单击都会转到名为 oneTap 的相同函数。在这个函数中,我如何区分点击来自哪个 View ?

代码:

@synthesize feedsView, peopleView, messagesView, photosView;

- (void)viewDidLoad
{
[super viewDidLoad];

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneTap:)];
[singleTap setNumberOfTapsRequired:1];
[singleTap setNumberOfTouchesRequired:1];
[feedsView addGestureRecognizer:singleTap];
[peopleView addGestureRecognizer:singleTap];
[messagesView addGestureRecognizer:singleTap];
//[photosView addGestureRecognizer:singleTap];
[singleTap release];

return;
}

最佳答案

我有同样的问题,它只添加到最后一个 View 。可能有更好的解决方案,但我只是为每个 View 创建了一个标记手势并将它们链接到相同的选择器方法(在您的情况下为 oneTap:)。为了区分哪个 View 激活了该方法,您可以只标记您的 View ,feedsView.tag = 0; peopleView.tag = 1; 等等。然后当方法被调用时:

- (void)oneTap:(UIGestureRecognizer *)gesture {
int myViewTag = gesture.view.tag; // now you know which view called
// use myViewTag to specify individual actions;
}

关于objective-c - iOS 将 tapGesture 添加到多个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6237693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com