iOS:在接触发生时转移UIView的所有权?

我收到touchesBegan的那一刻,我想删除触摸的视图和addSuperview到新的父视图,然后继续接收触摸.但是我发现有时这不起作用.具体来说,从不调用touchesMoved和touchesEnded.

有没有一个技巧使这项工作正确?这用于实现拖放行为,其中视图最初位于滚动视图内.

谢谢.

解决方法

代替:
[transferView removeFromSuperView];
[newParentView addSubview:transferView];

仅限使用:

[newParentView addSubview:transferView];

在文档中,声明“视图只能有一个超级视图.如果视图已经有超视图,并且该视图不是接收者,则此方法会在将接收器作为新的超级视图之前删除先前的超视图.”

因此,不需要使用removeFromSuperView,因为它由addSubview处理.我注意到removeFromSuperView结束任何当前的触摸而不调用touchesEnded.如果仅使用addSubview,则不会中断触摸.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...