textFieldShouldBeginEditing не вызывается

Я пытаюсь использовать textFieldShouldBeginEditing , чтобы отключить отображение клавиатуры для пользовательского UITextField . Я реализую все методы UITextFieldDelegate . Однако по какой-то причине textFieldShouldBeginEditing фактически никогда не вызывается.

ВСЕГДА вызываются следующие методы делегата:

– textFieldDidBeginEditing:
– textFieldShouldEndEditing:
– textFieldDidEndEditing:

Представление структурировано следующим образом:

UIViewController , который содержит scrollview.В зависимости от состояния представления этот ScrollView будет содержать UIView со списком настраиваемых UITextFields .

Я использую iOS 4.3.5 (8L1) на этом устройстве.

Есть идеи?

Править; добавил несколько фрагментов кода:

UIViewController имеет следующий интерфейс

@interface AViewController: UIViewController<UITextFieldDelegate>

После загрузки UIViewController я подключаю все UITextFields к представлению с помощью

aSubView.aTextField.delegate = self;

(упрощенных) реализаций делегата, расположенных в AViewController

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
}

- (void)textFieldDidEndEditing:(UITextField *)textField
{
}

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    return YES;
} 

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    return YES;
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    return YES;
}

Custom UITextField код

Упрощенный файл реализации -

#import "PVEntryTextField.h"
#import "EntryViewController.h"

@implementation PVEntryTextField
@synthesize isPasswordField, state, singleTap;

- (id)initWithCoder:(NSCoder *)inCoder
{
    if (self = [super initWithCoder:inCoder])
    {
         self.font = [UIFont fontWithName:@"Helvetica-Bold" size:19];
         self.textColor = [UIColor colorWithRed:51.0/255.0 
                                         green:51.0/255.0 
                                          blue:51.0/255.0 
                                         alpha:1.0];
         self.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
    }

    return self;
}

- (CGRect)textRectForBounds:(CGRect)bounds
{
    return CGRectMake(bounds.origin.x + 16, bounds.origin.y,
                      bounds.size.width - 16*2 - 10, bounds.size.height);
}

- (CGRect) editingRectForBounds:(CGRect)bounds
{
    return [self textRectForBounds:bounds];
}

- (BOOL) canBecomeFirstResponder
{
    return YES;
}

- (void) updateState:(int) newState
{
     state = newState;
 }

- (void)dealloc
{
    [super dealloc];
}

 @end
9
задан Jay Bhalani 20 March 2017 в 05:43
поделиться