إيتكستفيلدليغات من إيتكستفيلدس متداخلة لا يتم استدعاؤها

StackOverflow https://stackoverflow.com/questions/7333528

سؤال

لدي فئة فرعية من UIView (وجهة نظري) التي لديها بعض UITextField كما سوبفيوس.ميفيو تنفذ UITextFieldDelegate البروتوكول من أجل أن يتم إعلامك عند النقر فوق الحقول النصية.كان هذا يعمل بشكل جيد.الآن أنا بحاجة إلى وضع تكستفيلدس في نوع من "حاوية" لتكون قادرة على تتلاشى داخل وخارج هذه الحاوية (وجميع أطفالها) مع UIView الرسوم المتحركة.لذلك أنا خلقت إيفيو (ميسوبفيو) ، جعلت من سوبفيو من ميفيو ووضع جميع تكستفيلدس داخله.الرسوم المتحركة يعمل بشكل جيد ولكن UITextFieldDelegate لا يحصل دعا بعد الآن.وأعتقد أنه لأن تكستفيلدس ليست الأطفال مباشرة من وجهة نظري بعد الآن.هل هناك أي طرق أخرى للتعامل مع هذا?

تحديث

فعلت نسخة صغيرة من التعليمات البرمجية الخاصة بي ، وربما هذا يساعد على العثور على المشكلة:

@interface MyView : UIView <UITextFieldDelegate>


@implementation MyView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self)
    {
        // This is MySubview:
        UIView *tempLabelsContainer = [[UIView alloc] initWithFrame:self.bounds];
        [tempLabelsContainer setUserInteractionEnabled:YES];
        [self addSubview:tempLabelsContainer];
        self.labelsContainer = tempLabelsContainer;
        [tempLabelsContainer release];

        UITextField *aTextField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 100, 20)];
        [aTextField setBackgroundColor:[UIColor clearColor]];
        [aTextField setText:@"Some text"];
        [aTextField setTag:1];
        [aTextField setDelegate:self];
        [self.labelsContainer addSubview:aTextField];
        [aTextField release];

        // More labels are being added
    }

    return self;
}

#pragma mark - UITextFieldDelegate methods

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    // This is not being called
    NSLog(@"TextField with the tag: %d should be edited", [textField tag]);    

    return NO;
}
هل كانت مفيدة؟

المحلول 2

سأجيب على سؤالي الخاص فقط في حالة حدوث شخص ما لديه نفس المشكلة-من الصعب تخيل شخص ما يفعل مثل هذا الخطأ السخيف, على أية حال:

كنت أقوم بتعيين إطار حاوية الملصقات على الذات.الحدود.ولكن ميفيوكونترولر تم إنشاء ميفيو مع إطار من كجريكتزيرو!لقد قمت بهذا التغيير لدعم الرسوم المتحركة في نفس الوقت الذي أضفت فيه الحاوية.لذلك اعتقدت أن المشكلة تتعلق بالتسلسل الهرمي للعرض.عار علي!!!

على أي حال ، شكرا لجميع المساعدين ، وخاصة لمادومال جونيتيليك الذي جعلني ، بإجابته ، أشاهد في اتجاه مختلف.

نصائح أخرى

طيب ثم ، أخذت محاولة كتابة التعليمات البرمجية الخاصة بك ، وأنه يعمل بها بالنسبة لي.فيما يلي بعض العناصر التي يمكنك محاولة تغييرها;

  • السبب في عدم قدرتك على تحرير حقل النص الخاص بك هو أنك تعود نو إلى طريقة تكستفيلدشولدبيجينيديتينغ.تغيير هذا إلى نعم.
  • حاول تحديد موضع (إن أمكن) حقل النص الخاص بك أقل قليلا مما قدمته.أيضا ، 20 بكسل على أي حال صغيرة جدا بالنسبة لحقل النص المناسب ، اجعل ذلك 40 بكسل على الأقل.قد يكون حقل النص 20 بكسل الموجود عند 0,0 مخفيا تماما إذا تم تشغيل شريط الحالة في الهاتف.
  • قم بتعيين نمط حدود لحقل النص الخاص بك.بقدر ما أعرف ، وهذا أمر مهم لحقل النص لتظهر والتفاعل بشكل جيد.(على سبيل المثال.حقل النص.بوردرستيل = إيتكستبوردرستيلروندريكت)

عبرت الأصابع!:)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top