uiview touch outside

来源:互联网 发布:淘宝哪家的铁观音好 编辑:程序博客网 时间:2024/06/05 19:41

refs:

http://lists.apple.com/archives/cocoa-dev/2011/Jun/msg00262.html

http://lists.apple.com/archives/cocoa-dev/2011/Jun/msg00279.html


1) 遇到的第一个问题。

创建xib的vc(- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil)后,想修改view的位置,

其位置一是由xib定义的,二是修改的偏移,三是( (void)viewDidLoad)中做的初始化。发现三步骤是最后show时才会生效,即,步骤二会先跑到。

步骤三后到,所以把步骤二的修改给覆盖掉了。

solution:

把步骤三的初始化动作都放到步骤二中去做了,步骤三基本不做事。


2)遇到的第二个问题

view做了右移动1/4屏幕后,添加了一个新的view。即做了个右滑动作。新添加的view占左侧1/4屏幕,上面的tableview 不能点击。

参考了refs的链接,导入了solution,即对view的touch 命中事件进行了重写,如下。

-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event{    UIView *retval = nil;    // traverse the subviews in backwards order until one returns something    for( UIView *subview in [ [ self subviews ] reverseObjectEnumerator ] )        if( ( retval = [ subview hitTest:[ subview convertPoint:point fromView:self ] withEvent:event ] ) )            break;        return retval;}

对于次view而言,理论上还在屏幕上,估计touch是根据view的frame位置大小来定的,这样的话左侧1/4被忽略了。

不知到默认的hitTest是怎么写的。


0 0
原创粉丝点击