প্রোগ্রামে ফায়ার বাটন ক্লিক ইভেন্ট?


126

প্রোগ্রামটিমে বাটন ক্লিক ইভেন্টটি চালানোর কোনও উপায় আছে কি? আমার সেখানে একটি ইউআইভিউতে একটি বোতাম রাখা হয়েছে এবং একটি নির্দিষ্ট দৃশ্যে আমি কোনও ব্যবহারকারী হিসাবে ম্যানুয়ালি নয়, কোডের মাধ্যমে বোতামটি ক্লিক করতে চাই। এটি কি আইওএস বিকাশে সম্ভব? আপনার পরামর্শ প্রদান করুন এবং এটি কীভাবে আমাকে গাইড করুন।

ধন্যবাদ।

উত্তর:


313

কেনের উত্তরের মতো বাছাই করুন, তবে এটি আরও নমনীয় হ'ল যদি আপনি সেগুলি পরিবর্তন করেন বা একাধিক যুক্ত করেন তবে এটি বোতামগুলির প্রকৃত ক্রিয়াকে ট্র্যাক করবে।

[button sendActionsForControlEvents:UIControlEventTouchUpInside];

8
এটি কি বোতামটি হাইলাইট করে যদি button.showsTouchWhenHighlighted = YESএটি পছন্দ করে তবে এটি কোনও বাস্তব স্পর্শের সাথে থাকে?
chown

2
এই উত্তরটি দুর্দান্ত বি / সি, এটি সহজেই অন্যান্য কন্ট্রোলগুলিতে যেমন ইউআইএসউইচ (ইউআইসিএন্ট্রোলভেন্টুভ্যালু চেঞ্জড) তে অনূদিত হতে পারে এবং আমার ক্ষেত্রে লক্ষ্য / ক্রিয়া কোডকে সরাসরি কল করার চেয়ে অনেক ভাল / বি সি সি আমি স্যুইচটি পরিবর্তন করতে চাই! ধন্যবাদ.
জন এর্ক

না এটি বাটনটি হাইলাইট করে না যদি বাটন.শাউজসুচল হাইটলাইট = ইয়েস। ; (
রিচি হায়াত

7
আপনার যদি হাইলাইটের প্রয়োজন হয় তবে আপনি এটি করতে পারেন। [বোতাম সেট হাইলাইটলাইট: হ্যাঁ]; [বাটনে সেন্ডঅ্যাকশনস কনট্রোলএভেন্টস: ইউআইসিএন্ট্রোলইভেন্টটচআপসিড]; [বোতাম সেট হাইলাইটলাইট: না]; এবং এটি দুর্দান্ত কাজ করে। -আরহ
রিচি হায়াত

হ্যালো @ জাকি, আমি যদি অ্যাকশন না পাঠিয়ে শুধুমাত্র অ্যানিমেশন চাই, আমি কীভাবে এটি করতে পারি?
বেনহি

13

আমার উপরের মত একই সমস্যা ছিল। আমি একটি মন্তব্য পোস্ট করতে হবে, কিন্তু আমার খ্যাতি যথেষ্ট বেশি নয়। সুতরাং, আমি পরিবর্তে সম্পূর্ণ উত্তর পোস্ট করব:

[btn setHighlighted:YES];
[btn sendActionsForControlEvents:UIControlEventTouchUpInside];
[btn performSelector:@selector(setHighlighted:) withObject:NO afterDelay:0.25];

এটি প্রোগ্রাম্যিকভাবে বোতামটি হিট করবে এবং আপাতদৃষ্টিতে স্বাভাবিক সময়ের জন্য এটি হাইলাইট করবে। রিচির পরামর্শটি কার্যকর হয়নি কারণ বোতামটি কেবল এক অনির্বচনীয় সময়ের জন্য হাইলাইট করা হয়েছিল (যদি তা হয়)।


এটি হাইলাইট করা হয়নি, কোডের বর্তমান খণ্ডটি সম্পাদন শেষ হওয়ার পরে কেবল অঙ্কনটি ঘটে। এটি একটি দুর্দান্ত ফিক্স।
ম্যাটসভেন

6

ব্যবহারকারী যখন বোতামটি টিপায় তখন কেবল কার্যকর করা কোডটি কার্যকর না করে কেন?

-(void)myMethod
{
   // do stuff
}

-(IBAction)myButtonClick:(id)sender
{
    [self myMethod];
}

-(void)clickMyButton
{
    [self myMethod];
    // OR
    [self myButtonClick:nil];
}

না, আমার প্রয়োজনীয়তাটি পদ্ধতিটিকে কল করছে না, কীভাবে প্রোগ্রামটিতে বাটন ক্লিক ইভেন্টটি ফায়ার করা যায়, যখন ব্যবহারকারীরা ম্যানুয়ালি এটি ক্লিক করে না। আমি একটি ইউআইভিউ-তে একটি ইউআইবাটন প্রোগ্রামক্রমে তৈরি করেছি, আমি নিজেই প্রোগ্রামের মাধ্যমে নির্দিষ্ট সময় বিরতির পরে বাটন ক্লিক ইভেন্টটি স্বয়ংক্রিয়ভাবে ফায়ার করতে চাই, ব্যবহারকারীর দ্বারা নয়।
গেটসি

তারপর স্পর্শ সংশ্লেষ ছাড়া এটি সম্ভব হয় না। Cocoawithlove.com/2008/10/… দেখুন । তবে, আপনি এই অ্যাপ্লিকেশনটিকে স্টোরটিতে এই পদ্ধতিটি ব্যবহার করে জমা দিতে পারবেন না, কারণ এটি একটি ব্যক্তিগত API ব্যবহার করে। এটি সাধারণত ডিবাগিংয়ের উদ্দেশ্যে ব্যবহৃত হয়।
ইভান মুলাওস্কি

আপনাকে কেবল স্পষ্ট পদ্ধতিতে কল করার জন্য কোনও স্পর্শের অনুকরণের প্রয়োজন কেন তা ব্যাখ্যা করেন না তবে এটি যাওয়ার সহজতম উপায়। আপনার টাইমার অ্যাকশনটি আপনার যে কোনও পদ্ধতিতে কল করতে পারে এবং যে পদ্ধতিটি এটি কল করে তা ইউআইতে প্রতিক্রিয়া জানাতে পারে যে বোতামটি টিপানো হচ্ছে বোতামের স্থিতি পরিবর্তন করে (নির্বাচিত, হাইলাইটেড ইত্যাদি)। যদি এটি কাজ করে না, তাই এটি হতে পারে।
এক্সজোনস

1

আপনি যদি কোনও ইউআইবাটন সম্পর্কিত কথা বলছেন তবে আপনি কেবল একই পদ্ধতিতে কল করতে পারেন যেটি যখন ইউআইবাটনটি টেপ করা হয় তখন কল করে। উদাহরণ স্বরূপ:

[self myButtonsTargetMethod];

না, আমার প্রয়োজনীয়তাটি পদ্ধতিটিকে কল করছে না, কীভাবে প্রোগ্রামটিতে বাটন ক্লিক ইভেন্টটি ফায়ার করা যায়, যখন ব্যবহারকারীরা ম্যানুয়ালি এটি ক্লিক করে না। আমি একটি ইউআইভিউ-তে একটি ইউআইবাটন প্রোগ্রামক্রমে তৈরি করেছি, আমি নিজেই প্রোগ্রামের মাধ্যমে নির্দিষ্ট সময়ের ব্যবধানের পরে বাটন ক্লিক ইভেন্টটি স্বয়ংক্রিয়ভাবে ফায়ার করতে চাই, ব্যবহারকারী দ্বারা নয়।
গেটসি

1

হ্যাঁ,

[_button setHighlighted:YES];
[_button sendActionsForControlEvents:UIControlEventTouchUpInside];
[_button setHighlighted:NO];

তবে এখানে সমস্যাটি হ'ল আপনি সেই ইভেন্টগুলি দেখতে পারবেন না কারণ এটি খুব দ্রুত। সুতরাং আপনি যা করতে পারেন তা হ'ল এনএসটিমেমার সহ উপরের কোডটি চেষ্টা করুন।

NSTimer *quick = [NSTimer scheduledTimerWithTimeInterval:2.5 target:self selector:@selector(MeFirst:) userInfo:nil repeats:NO];

আমি তৈরি হওয়া পদ্ধতিটিই আমি ফার্স্ট।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.