سؤال

حسنًا ، لذلك لدي UILabel تم إنشاؤه في Builder Interface يعرض بعض النص الافتراضي لـ "TAP TO BEGIN".

عندما ينقر المستخدم UILabel أريدها أن تؤدي إلى طريقة ibacte:-(IBAction)next; الذي يقوم بتحديث النص على الملصق ليقول شيئًا جديدًا.
سيكون من المريح حقًا أن يسمح لي هذا ببساطة بسحب اتصال من طريقتي إلى التسمية الخاصة بي ثم حدد لمس الداخل ، كما هو الحال مع زر. لكن للأسف ، لا سيجار.

على أي حال ، أعتقد أن سؤالي هو ، هل سأضطر إلى الفئة الفرعية UILabel للحصول على هذا للعمل؟ أم أن هناك بطريقة ما يمكنني سحب زر فوق الملصق ، ولكن اجعله غير شفاف 0 ٪. أم أن هناك حل أبسط أفتقده؟

هل كانت مفيدة؟

المحلول

تحقق من ذلك:

UILabel *label = ...
label.userInteractionEnabled = YES;
UITapGestureRecognizer *tapGesture =
      [[UITapGestureRecognizer alloc] initWithTarget:self 
                                              action:@selector(labelTap)];
[label addGestureRecognizer:tapGesture];

الحيلة هي تمكين تفاعل المستخدم.

نصائح أخرى

يرث Uilabel من Uiview الذي يرث من uiresponder. يمكن لجميع كائنات uiresponder التعامل مع الأحداث التي تعمل باللمس. لذلك في ملف الفصل الخاص بك يعرف عن عرضك (الذي يحتوي على Uilabel) تنفيذ:

-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event;

في الواجهة ، قم بتعيين قيمة علامة Uilabel. عندما تحدث اللمسات في طريقة TouchesBegan الخاصة بك ، تحقق من قيمة العلامة للعرض الذي تنتمي إليه العلامة:

UITouch *touch = [touches anyObject];

if(touch.view.tag == MY_TAG_VAL)
label.text = @"new text";

تقوم بتوصيل التعليمات البرمجية الخاصة بك في ملف الفصل الخاص بك باستخدام كائن Uilabel في Builder عن طريق الإعلان عن متغير مثيل Uilabel الخاص بك مع بادئة Iboutlet:

IBOutlet UILabel *label;

ثم في Builder Interface ، يمكنك توصيلها.

يمكنك استخدام Uibultton ، وجعله شفافًا ، أي نوع مخصص بدون صورة ، وإضافة uilabel عليه (مركزه). ثم قم بتوصيل أحداث الزر العادية.

سريع 3

لديك iboutlet

@IBOutlet var label: UILabel!

حيث يمكنك تمكين تفاعل المستخدم وإضافة معرف لفتة

label.isUserInteractionEnabled = true
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(userDidTapLabel(tapGestureRecognizer:)))
label.addGestureRecognizer(tapGesture)

وأخيرا ، التعامل مع الصنبور

func userDidTapLabel(tapGestureRecognizer: UITapGestureRecognizer) {
  // Your code goes here
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top