iOS在用户触摸某个区域时调用方法

时间:2013-07-18 15:53:27

标签: ios methods uiview touch

所以我在键盘和对象之间有这个空间。并且我想在用户触摸该特定区域时触发方法。我该怎么做呢? 我尝试过使用带有UITapGesture的UIView,但似乎无法让它工作。

4 个答案:

答案 0 :(得分:0)

您引用的“对象”是什么?

如果它已经启用了用户交互,那么您只需要......

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    // do something
}

将它放在视图控制器中。键盘将消耗触摸,因此不会触发。如果“对象”启用了用户交互,则它也将消耗触摸。仅在按下不消耗触摸的区域时才会触发。

如果它没有消耗接触那么......

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    // get the touch
    UITouch *touch = [touches anyObject];

    // get the location of the touch in the main view of the view controller
    CGPoint touchPoint = [touch locationInView:self.view];

    // if the touch is inside the object then ignore it
    if (CGRectContainsPoint(object.frame, touchPoint)) {
        return;
    }

    // this is where you do something.
}

答案 1 :(得分:0)

您可以使用隐形按钮:

UIButton *theButton = [UIButton buttonWithType:UIButtonTypeCustom];
[theButton addTarget:self action:@selector(functionYouWantToCall:) forControlEvents:UIControlEventTouchUpInside];
theButton.frame = CGRectMake(x, y, width, height);
[self.view addSubview:theButton];

根据需要设置框架。完成按钮后,使用[theButton removeFromSuperview];

答案 2 :(得分:0)

向self.view添加UITapGesture,但请确保将cancelsTouchInView的属性设置为NO。这样可以防止您覆盖已放置在屏幕上的任何触摸方法。

UITapGestureRecognizer * tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(someAction)];
tapGesture.cancelsTouchInView = NO;
[self.view addGestureRecognizer:tapGesture];

答案 3 :(得分:0)

如果您尝试向键盘添加其他键,例如Chrome有“.com”等快捷方式,您可能需要尝试:

[self.yourTextView setInputAccessoryView:toolBar];