如何通过UITextField告诉自定义UIView接收触摸事件

时间:2013-06-06 23:48:37

标签: ios uiview uitextfield uilabel

我正在使用的是我有一个自定义UIView,它将UILabel和UITextField组合在一起作为一些用户输入的一部分。我在应用程序中显示的整个视图中有几个。什么是好的是能够让用户触摸UILabel或UITextField,然后让UITextField允许输入字段。

有一种简单的方法吗?

3 个答案:

答案 0 :(得分:1)

是的,有,我实际测试过它。您可以为视图添加点击手势识别器(包含标签和文本视图的手势识别器),如下所示:

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

然后,在viewTapped:

-(void)viewTapped:(id)sender {
    [self.yourTextField becomeFirstResponder];
}

希望这有帮助!

答案 1 :(得分:1)

为您的标签添加点击手势识别器,点击时告诉相应的文本字段成为第一响应者(调出键盘)。

    // In your init or awakeFromNib:
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTapped:)];
    self.label.userInteractionEnabled = YES;
    [self.label addGestureRecognizer:tap];

...

- (void)labelTapped:(id)sender
{
    [self.textField becomeFirstResponder];
}

答案 2 :(得分:0)

您可以定义UIGestureRecognizer委托方法,并检查是否是所需的点按手势区域。如果是,则返回TRUE,否则返回FALSE。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

    // Disallow recognition of tap gestures in the segmented control.
    if ((touch.view == yourButton)) {//change it to your condition
        return NO;
    }
    return YES;
}