1

我知道它非常基本的问题,但我正面临着一个奇怪的行为UIPickerView。这是我的扫描仪 - 我UIPickerView在我的应用程序中使用。我的问题是,当我单击行didSelectRow方法时不会调用,但是当我滚动选择器行时,它会起作用。 更具体地说,假设当前选择了选择器上的第一行,如果我单击第 4 行,则didSelectRow不会触发该方法。我错过了什么?

更新:如果我从方法中评论此代码,viewDidLoad那么一切正常-

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

    [self.view addGestureRecognizer:tap];

-(void)dismissKeyboard {
    [numberTextField resignFirstResponder];
    [nameTextField resignFirstResponder];
    [cityTextField resignFirstResponder];
    [addressTextField resignFirstResponder];
    [zipTextField resignFirstResponder];
}
4

2 回答 2

1

我假设您正在尝试使用轻按手势识别器来关闭键盘,如果他们单击视图中的任何位置。这导致的问题是现在您的 UIPicker 没有将触摸事件传递给它。对于可能的解决方案,我有两个想法。

1)在方法内部:

  • (CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(UIView *)view

测试位置和/或视图以确定选择器是否被触摸,然后转发事件。

2)不要将点击识别器添加到整个视图,而是将不可见的子视图添加到可能的点击区域以关闭不会与选择器重叠的键盘。

于 2012-11-08T14:49:36.707 回答
0

您是否尝试将手势识别器添加到 self.view 的其他部分而不是pickerview?

于 2012-11-08T13:49:37.440 回答