iphone – 超越uiview的界限

iphone – 超越uiview的界限,第1张

概述当UIButton帧位于父帧的外部时,UIButton(或任何其他控件)是否可能接收触摸事件?因为当我尝试这个,我的UIButton似乎不能接收任何事件。我如何解决这个问题? 是。您可以覆盖hitTest:withEvent:方法来返回与该视图包含的点相比更大的一组点的视图。见 UIView Class Reference。 编辑:示例: - (UIView *)hitTest:(CGPoint) 当UIbutton帧位于父帧的外部时,UIbutton(或任何其他控件)是否可能接收触摸事件?因为当我尝试这个,我的UIbutton似乎不能接收任何事件。我如何解决这个问题?解决方法 是。您可以覆盖hitTest:withEvent:方法来返回与该视图包含的点相比更大的一组点的视图。见 UIView Class Reference。

编辑:示例:

- (UIVIEw *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{    CGfloat radius = 100.0;    CGRect frame = CGRectMake(-radius,-radius,self.frame.size.wIDth + radius,self.frame.size.height + radius);    if (CGRectContainsPoint(frame,point)) {        return self;    }    return nil;}

编辑2:(澄清后)为了确保按钮被视为在父的边界内,你需要重写pointInsIDe:withEvent:在父级包含按钮的框架。

- (BOol)pointInsIDe:(CGPoint)point withEvent:(UIEvent *)event{    if (CGRectContainsPoint(self.vIEw.bounds,point) ||        CGRectContainsPoint(button.vIEw.frame,point))    {        return YES;    }    return NO;}

注意代码只是在那里重写pointInsIDe是不是很正确。正如Summon在下面解释,请执行以下 *** 作:

-(BOol)pointInsIDe:(CGPoint)point withEvent:(UIEvent *)event    {    if ( CGRectContainsPoint(self.oversizebutton.frame,point) )        return YES;    return [super pointInsIDe:point withEvent:event];    }

注意,你很可能在此UIVIEw子类中使用self.oversizebutton作为IBOutlet;那么你可以拖动“超大按钮”的问题,到,有问题的特殊视图。 (或者,如果由于某种原因,你在一个项目中做了很多事情,你会有一个特殊的UIbutton子类,你可以通过你的子视图列表查找这些类。)希望它有帮助。

总结

以上是内存溢出为你收集整理的iphone – 超越uiview的界限全部内容,希望文章能够帮你解决iphone – 超越uiview的界限所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1047657.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存