0

我可能錯過了一些東西...... 首先,我從UITextField繼承,並增加了點擊手勢識別器的UITextField(在指定的初始化器):當文本框成爲第一個響應,手勢識別器沒有反應,甚至辭職後

UITapGestureRecognizer * ges = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(pressed:)]; 
[self addGestureRecognizer:ges]; 


-(void)pressed:(id)sender 
{ 
    didPressed = YES; 
    [self becomeFirstResponder]; 
} 

然後我把我的viewController是文本框的委託並實現這一點:

- (BOOL)textField:(UIOneLetterTextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    NSLog(@"Key Pressed %@", string); 
    textField.text = string; 
    [textField resignFirstResponder]; 
    UITapGestureRecognizer * ges = [[UITapGestureRecognizer alloc] initWithTarget:textField action:@selector(pressed:)]; 
    [textField addGestureRecognizer:ges]; 
    [self gotoNextTextfield:textField.cellLoc]; 
    return NO; 
} 

從這一點來說,出於某種原因,pressed:不會被調用磨片點擊textField。 任何想法爲什麼?

+1

有可能是其他手勢識別器干擾它。嘗試設置您的手勢識別器的委託,實現所有委託方法,並查看哪些被調用。 –

+0

爲什麼要在派生類的指定初始化程序中添加兩次手勢識別器,然後再在委託方法中添加手勢識別器? – blackbird

+0

我再次添加,因爲我絕望......亞倫,你的建議是有道理的...我會給它一個機會 – Yony

回答

1

代表應執行 gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: 並返回YES。

0

是否有一個特定的原因,你爲什麼使用UITapGestureRecognizer?該UITextFieldDelegate有一個被稱爲方法每當textField開始編輯:

  • textFieldShouldBeginEditing:
  • textFieldDidBeginEditing:

除非你有一些代碼,使用這些方法的衝突,您不需要UITapGestureRecognizer

+0

textFieldDidBeginEditing對我不好,因爲我所有的文本字段都是一個字母textField - 當你鍵入一個字母時自動跳轉到下一個文本字段,並且我想在文本字段上點擊時有一個特殊的邏輯 – Yony