有关自定义控件(继承于uivew)触摸事件处理的感想
来源:互联网 发布:淘宝联盟二维码分享 编辑:程序博客网 时间:2024/05/16 17:28
http://blog.csdn.net/zaitianaoxiang/article/details/7554490
无论你定义什么控件,最原始也最自由的实现方式就是继承UIView,绘制自己想要的控件,但若要响应点击等事件而且自己的控件还比较异形那自然要响应touch事件。
当控件被点击时,若控件可见度(alpha值)小与0.01,则控件默认是不响应ouch事件的。
当控件中有个别subview显示在控件外部(即subview的frame不在控件区域内),该subview默认也不响应touch事件,但自己偏偏又想处理怎么办? 经过测试调试阅读文档将此问题解决。
解决方案:
让控件复写 -(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event方法。 只有控件存在无论可见度是什么uikit框架会递归回调此接口。
若要subview响应touch事件,只需判断point是否在subview控件区域内,若在则返回此subview。若不在则返回nil。
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
BOOL isinView = NO;
UIView *clickView = nil;
for (UIView *showView in self.currentShowItemViewArray)
{
CGRect rect = showView.frame;
if ([showView isKindOfClass:[MyTabBarView class]])
rect = showView.bounds;
isinView = CGRectContainsPoint(rect , point);
if (isinView)
{
clickView = showView;
break;
}
}
if (isinView)
return clickView;
return nil;
}
subview 实现touch的回调函数接口响应touch事件即可。
经过调试发现,此方式可以定义任意形状的控件和响应方式,只要你能想到的,呵呵。。。
- 有关自定义控件(继承于uivew)触摸事件处理的感想
- 有关自定义控件(继承于uivew)触摸事件处理的感想
- 有关于tableView的触摸事件
- 自定义控件之触摸事件的传递
- 有关于 继承的实例
- Android 控件的触摸事件传递与处理
- Android 控件的触摸事件传递与处理
- cocos-js 3.8 控件触摸事件处理
- 自定义用户控件的事件处理
- c#自定义控件中事件的处理
- android的触摸事件处理
- View的触摸事件处理
- UIbutton UIvew 事件
- 自定义控件篇 第二章 输入事件(触摸滑动,Scroller,事件分发机制)
- Studio之widget类型及继承于Wiget类型控件的事件-----监听各个GUI控件的交互事件。
- 处理继承的事件
- C# 自定义控件-事件处理
- 控件树的触摸事件派发小结
- 生IP+Time+rand序列的方法类
- 再学C++ Primer(10)-面向对象编程
- 质数问题总结
- JNI理解(今天肯定没有时间深入了)
- haXe入门
- 有关自定义控件(继承于uivew)触摸事件处理的感想
- Codeforces Round #142 (Div. 1) C. Triangles
- 淘宝技术发展
- JAVA.SWT/JFace: SWT Drag and Drop
- 《Android系统学习》第四章:分析Android系统编译过程
- 取消隐藏ios键盘的方法
- Windows7在Notepad++中配置Python+OpenCV
- [LeetCode]Convert Sorted List to Binary Search Tree
- c# asp.net常见问题收集之二