0

当有人单击 UITableViewCell 中的按钮时,我正在使用以下代码调用函数。不幸的是,即使在按钮区域之外释放触摸,代码仍然会被调用。(例如,触摸按钮,滑动手指离开按钮,按钮仍处于动作状态)。

有人可以告诉我为什么会发生这种情况,或者这样做的正确方法是什么?我想我的问题可能出在“addTarget”子句上——也就是说,TouchUpInside 可能指的是我的 UITableView 而不是按钮本身?

[cellPeriod.myButton1 addTarget:self action:@selector(buttonClickedStopWatch:) forControlEvents:UIControlEventTouchUpInside];
4

1 回答 1

2

该问题与 UITableView 无关。

我想也许苹果是故意这样做的,因为我们的手指不是鼠标。你可以检查苹果公司的应用程序,它也有问题。可以看到navigationBar的backItemButton。

如果你想解决它,你可以使用 UIControl 的方法:

 - (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event; 

检查此点是否在按钮的矩形内。并且可以添加一个 BOOL 值来决定是否继续做选择器

添加:

#import "MyButton.h"

@implementation MyButton

- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
{
    CGPoint location = [touch locationInView:self];
    CGRect btnRect = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
    if (CGRectContainsPoint(btnRect, location)) {
        self.tag=-1;
        return;
    }
    self.tag=-2;
}
@end
于 2012-07-20T13:47:27.970 回答