UIControlEventTouchDown不适用于UIScrollView

时间:2014-07-08 19:53:11

标签: ios objective-c uiscrollview uitextfield uicontrolevents

我有这个代码,当用户在我的文本字段中单击时捕获,并调用函数:

-(void)viewDidLoad{
    [mytextfield addTarget:self
                  action:@selector(callvariant:)
        forControlEvents:UIControlEventTouchDown];
    }
-(void)callvariant:(UITextField *)textField{

        NovoProdutoMFViewController *mf = [[NovoProdutoMFViewController alloc] init];
        [self.navigationController pushViewController:mf animated:YES];

        [mf setBusca:textField.placeholder];

    }

代码运行完美,但最近需要使用此代码在我的项目中放置UIScrollView:

-(void)viewDidLoad{
        [mytextfield addTarget:self
                      action:@selector(callvariant:)
            forControlEvents:UIControlEventTouchDown];

    scroll.contentSize = scroll.frame.size;
    scroll.frame = self.view.frame;

    [self.view addSubview:scroll];
        }
-(void)callvariant:(UITextField *)textField{

            NovoProdutoMFViewController *mf = [[NovoProdutoMFViewController alloc] init];
            [self.navigationController pushViewController:mf animated:YES];

            [mf setBusca:textField.placeholder];

        }

现在有时当用户点击文本字段时调用该函数并且有时不调用,并且在其他时候有必要将文本字段单击下来超过2秒以调用该函数并且有时此方法不起作用

我不知道会发生什么,但我该如何解决?

1 个答案:

答案 0 :(得分:0)

如果您想捕获用户触摸UITextField的事件,最好使用其委托方法。

UITextFieldDelegat有一个方法

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;        // return NO to disallow editing.

如果您在此处执行某些操作并返回NO,则会得到相同的结果。