将 UITapGestureRecognizer 添加到动态添加的视图
Add UITapGestureRecognizer to dynamically added views
我在将 tapRecognizers 添加到我的视图时遇到了一些问题。
我向我的 UIScrollView 添加了未知数量的事件、新闻和优惠券,点击我想打开详细视图。但是点击应用程序崩溃并出现以下错误
Almhults_appen.MainActivity redirectFromHomeScreen:]: unrecognized selector sent to instance 0x7f93c2d4df20
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Almhults_appen.MainActivity redirectFromHomeScreen:]:
据我所知,我可以使用 UITableView 并将所有视图添加到其中。但是,如果可能的话,我个人希望避免使用它,但由于我是 Swift 的新手,所以我不相信我在这里的判断。
if (!event_ar.isEmpty) {
for event: Event in event_ar {
... Init EventView and add to UIScrollView
// Add tapGesture
let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(
target: self,
action: "redirectFromHomeScreen:"
)
eventView.addGestureRecognizer(tapGesture)
}
}
if (!news_ar.isEmpty) {
... Add news identically to events
}
if (!coupon_ar.isEmpty) {
... Add coupons identically to events
}
编辑添加的动作函数
private func redirectFromHomeScreen(sender: UITapGestureRecognizer) -> Void{
... Do stuff
}
提前致谢:)
您必须将手势添加到要点击的视图中。添加它的最佳时机是在该视图的 viewDidLoad 方法中。使用 Objective-C 我这样做并且效果很好。
- (void)viewDidLoad
{
[super viewDidLoad];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(PanToFlipPage:)];
[self.view addGestureRecognizer:pan];
}
根据您的崩溃报告..首先您需要声明函数
func redirectFromHomeScreen (sender : UITapGestureRecognizer){
}
声明并重试
在创建所有子视图和按钮后尝试添加这些行。
[self.view setNeedsLayout];
[self.view layoutIfNeeded];
我在将 tapRecognizers 添加到我的视图时遇到了一些问题。 我向我的 UIScrollView 添加了未知数量的事件、新闻和优惠券,点击我想打开详细视图。但是点击应用程序崩溃并出现以下错误
Almhults_appen.MainActivity redirectFromHomeScreen:]: unrecognized selector sent to instance 0x7f93c2d4df20
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Almhults_appen.MainActivity redirectFromHomeScreen:]:
据我所知,我可以使用 UITableView 并将所有视图添加到其中。但是,如果可能的话,我个人希望避免使用它,但由于我是 Swift 的新手,所以我不相信我在这里的判断。
if (!event_ar.isEmpty) {
for event: Event in event_ar {
... Init EventView and add to UIScrollView
// Add tapGesture
let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(
target: self,
action: "redirectFromHomeScreen:"
)
eventView.addGestureRecognizer(tapGesture)
}
}
if (!news_ar.isEmpty) {
... Add news identically to events
}
if (!coupon_ar.isEmpty) {
... Add coupons identically to events
}
编辑添加的动作函数
private func redirectFromHomeScreen(sender: UITapGestureRecognizer) -> Void{
... Do stuff
}
提前致谢:)
您必须将手势添加到要点击的视图中。添加它的最佳时机是在该视图的 viewDidLoad 方法中。使用 Objective-C 我这样做并且效果很好。
- (void)viewDidLoad
{
[super viewDidLoad];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(PanToFlipPage:)];
[self.view addGestureRecognizer:pan];
}
根据您的崩溃报告..首先您需要声明函数
func redirectFromHomeScreen (sender : UITapGestureRecognizer){
}
声明并重试
在创建所有子视图和按钮后尝试添加这些行。
[self.view setNeedsLayout];
[self.view layoutIfNeeded];