相关疑难解决方法(0)

使用hitTest:withEvent捕获其超级视图框架外的子视图的触摸:

我的问题:我有一个超级视图EditView,基本上占用整个应用程序框架,子视图MenuView只占用底部〜20%,然后MenuView包含它自己的子视图ButtonView,它实际上位于MenuView边界之外(类似这样:) ButtonView.frame.origin.y = -100.

(注意:EditView其他子视图不属于MenuView视图层次结构,但可能会影响答案.)

您可能已经知道了这个问题:何时ButtonViewMenuView(或者更具体地说,当我的触摸在MenuView范围内)时,ButtonView响应触摸事件.当我的触摸超出MenuView界限(但仍然在ButtonView界限内)时,不会收到任何触摸事件ButtonView.

例:

  • (E)是EditView所有观点的父母
  • (M)是MenuViewEditView的子视图
  • (B)是ButtonViewMenuView的子视图

图:

+------------------------------+
|E                             |
|                              |
|                              |
|                              |
|                              |
|+-----+                       |
||B    |                       |
|+-----+                       |
|+----------------------------+|
||M                           ||
||                            ||
|+----------------------------+|
+------------------------------+
Run Code Online (Sandbox Code Playgroud)

因为(B)在(M)的框架之外,(B)区域中的抽头将永远不会被发送到(M) - 实际上,(M)在这种情况下从不分析触摸,并且触摸被发送到层次结构中的下一个对象.

目标:我认为压倒一切hitTest:withEvent:可以解决这个问题,但我不明白究竟是怎么回事.在我的情况下,应该hitTest:withEvent: …

objective-c ios uiview-hierarchy

91
推荐指数
3
解决办法
3万
查看次数

UIButton事件'Touch Up Inside'无效.'Touch Down'工作得很好

我在UIView中有一个UIButton,它位于UIViewController中,我已经从.xib文件中分配和输入.

当将IBAction挂钩到UIButton的"Touch Down"事件时,它会正确触发.但如果我把它连接到'Touch Up Inside'事件,它就不会响应.

其他事件也不起作用.'触摸拖动输入','触摸拖动退出','触摸外部'等.仅触摸向下.

有谁知道为什么会这样?


该按钮是视图控制器中的简单圆角矩形按钮.我已经加载了视图控制器:

-(void) pushNewViewController
{
    MyViewController* newViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
    [self.view addSubview:newViewController.view];
    [newViewController release];
}
Run Code Online (Sandbox Code Playgroud)

我在IB中将此按钮添加到圆形rect按钮到MyViewController.我创建了以下IBActions:

-(IBAction) buttonTouchDown:(id)sender
{
    NSLog(@"Button Touch Down Event Fired.");
}

-(IBAction) buttonTouchUpInside:(id)sender
{
    NSLog(@"Button Touch Up Inside Event Fired.");
}
Run Code Online (Sandbox Code Playgroud)

在IB I菜单中单击按钮并将Touch Down插座拖动到MyViewController并选择buttonTouchDown:.保存了IB xib.

当我运行并测试按钮并获得"Button Touch Down Event Fired"日志消息时.

但是当我回到IB并将Action更改为Touch Up Inside并将其连接到buttonTouchUpInside:IBAction并保存.我再次测试,没有得到回应.

此致,Rich

iphone touch uibutton uikit ibaction

11
推荐指数
3
解决办法
2万
查看次数

UIScrollView touchesBegan

所以我想做的就是当用户触摸UIScrollView时播放声音.UIScrollViewDelegate具有scrollViewWillBeginDragging:方法,但它只在touchMoved上调用.我想让它在touchBegan上调用.

尝试touchesBegan:withEvent:但它没有任何接触.有人有线索吗?

iphone uiscrollview

10
推荐指数
4
解决办法
3万
查看次数

UIButton触摸内部事件在ios5中不起作用,而在ios6中没问题

我有一个包含大量UIButton的项目,使用xcode 4.5和storyboard以及ARC.在ios6中测试后,一切都很顺利.但在ios5中,UIButton触及内部事件不起作用,动作未调用.我尝试使用触摸它,它的工作原理.但是,我有很多UIButton,我不能一一改变.更重要的是,降落事件确实提供了良好的体验.

我在许多视图控制器中使用了以下代码:在viewDidLoad中:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self
                                                                      action:@selector(dismissKeyboard)];

[self.view addGestureRecognizer:tap];

-(void)dismissKeyboard {
       [aTextField resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)

这可能是原因.我稍后会看看.但它适用于ios6.你知道什么是错的吗?非常感谢!

storyboard uibutton ios5 ios6

7
推荐指数
2
解决办法
3586
查看次数