একটি বোতাম অক্ষম করুন


99

আমি একটি বোতাম অক্ষম করতে চাই (UIButton এটিতে ক্লিক করার পরে আইওএসের ) । আমি আইওএসের জন্য বিকাশে নতুন তবে আমি মনে করি উদ্দেশ্যটির সমতুল্য কোড - সি এটি:

button.enabled = NO;

তবে আমি তাড়াতাড়ি করতে পারিনি।

উত্তর:


209

জন্য বুলিয়ান মান NOসুইফট হয় false

button.isEnabled = false

এটা করা উচিত।

UIControlএর isEnabledসম্পত্তির জন্য সুইফ্ট ডকুমেন্টেশন এখানে


আপনি বোতামটি তার ইনিশিয়ালাইজারের মাধ্যমে বা স্টোরিবোর্ডের মাধ্যমে তৈরি করেছেন কিনা তা একই।
কেরারএম

আমি বোঝাতে চাইছি যখন আমার কোনও আউটলেট নেই। যাইহোক সমাধান হ'ল বিশ্বব্যাপী বোতামটি সংজ্ঞায়িত করা।
ড্যানিয়েল স্প্রিঞ্জার

44

আপনি যদি "চাপানো" উপস্থিতি ছাড়াই বাটনটি স্থির রাখতে চান:

// Swift 2
editButton.userInteractionEnabled = false 

// Swift 3
editButton.isUserInteractionEnabled = false 

মনে রাখবেন:

1) আপনার IBOutletহয় ->@IBOutlet weak var editButton: UIButton!

2) উপরের কোডটি ভিতরে যায় viewWillAppear


4
আমি ভেবেছিলাম এটি হ'ল আমি যা খুঁজছিলাম, তবে এটি কেবল ইউআইকিট হিসাবে প্রদর্শিত হবে, অ্যাপকিট নয়।
drootang

12

আমি এটি করার উপায়টি নিম্নরূপ:

@IBAction func pressButton(sender: AnyObject) {
    var disableMyButton = sender as? UIButton
    disableMyButton.enabled = false
}

আইবিএশন স্টোরিবোর্ডে আপনার বোতামের সাথে সংযুক্ত।

যদি আপনার আউটলেট হিসাবে আপনার বোতাম সেটআপ থাকে:

    @IBOutlet weak var myButton: UIButton!

তারপরে আপনি ব্যবহার করে সক্ষম বৈশিষ্ট্য অ্যাক্সেস করতে পারেন। বোতামের নাম স্বরলিপি:

    myButton.enabled = false

সুইফট ৪-এ আমার জন্য সূক্ষ্মভাবে কাজ করে I
ক্রিভভেনজ

স্পষ্টতার জন্য, সম্ভবত আপনার উপরের উত্তরে উল্লেখ করা উচিত যে আপনার কোডটি কাজ করার জন্য আইবিআউটলেট প্রয়োজন। আইবিআউটলেট দরকার ছিল কি না তা আমাকে বিভ্রান্ত করেছিল। স্পষ্টতই, এটি প্রয়োজন।

এটি কাজ করার জন্য এটি প্রয়োজন হয় না। আপনি আইবিএक्शनের কাস্ট বোতামটি টাইপ করতে পারেন এবং সক্ষম স্থিতি পরিবর্তন করতে পারেন বা যদি এটি আইবিআউটলেট হিসাবে সেট আপ করা থাকে তবে আপনি এটি আউটলেটে নোটেশন ব্যবহার করে করতে পারেন। উভয় উপায় কাজ করে।
ক্রিভভেঞ্জ

আমি বিশ্বাস করি যে আপনি যদি অন্য কোনও কার্যের মধ্যে থেকে বোতামটি অক্ষম করতে চান তবে আইবিআউটলেট দরকার।


6

যারা গুগলেড করেছেন "বোতামটি অক্ষম করুন" তবে তাদের ব্যবহারের ক্ষেত্রে আরও বেশি সমস্যা থাকতে পারে:

ভিজ্যুয়াল এফেক্ট দিয়ে অক্ষম করুন: অন্যরা যেমন বলেছে, এটি বোতামটি টিপানো থেকে রোধ করবে এবং সিস্টেম স্বয়ংক্রিয়ভাবে এটিকে অক্ষম দেখায়:

yourButton.isEnabled = false 

ভিজ্যুয়াল এফেক্ট ব্যতীত অক্ষম করুন: আপনি এমন কোনও ক্ষেত্রে কোনও বোতাম ব্যবহার করছেন যেখানে এটি দেখতে স্বাভাবিক দেখা উচিত তবে স্পর্শে প্রতিক্রিয়া দেখিয়ে পছন্দ মতো বোতামটি ব্যবহার করা উচিত নয়? এটা চেষ্টা কর!

yourButton.userInteractionEnabled = false

অক্ষম না করে লুকান: এই পদ্ধতির বোতামটি এটি অক্ষম না করে লুকিয়ে রাখে (অদৃশ্য তবে এখনও ট্যাপ করা যায়):

 yourButton.alpha = 0.0

সরান: এটি সম্পূর্ণরূপে দৃশ্য সরিয়ে ফেলবে:

 yourButton.removeFromSuperView()

একটি বোতামের পিছনে কিছু আলতো চাপুন: দুটি বোতাম স্ট্যাক করে রেখেছেন এবং আপনি শীর্ষ বাটনটি অস্থায়ীভাবে এটির মতো কাজ করতে চান? আপনার যদি আবার শীর্ষের বোতামের প্রয়োজন না হয় তবে এটি সরিয়ে দিন। আপনার যদি আবার এটির প্রয়োজন হয় তবে এর উচ্চতা বা প্রস্থকে 0 তে ঘনীভূত করার চেষ্টা করুন!


1

আপনি ব্যবহার isEnabledবা isUserInteractionEnabledসম্পত্তি ব্যবহার করে একটি বোতাম সক্ষম / অক্ষম করতে পারেন ।

দুটির মধ্যে পার্থক্য হ'ল:

  • isEnabledইউআইসিএন্ট্রোলের একটি সম্পত্তি (ইউআইবাটনের সুপার ক্লাস) এবং এটি সক্ষম / অক্ষম করার ভিজ্যুয়াল এফেক্টস (অর্থাত্ গ্রে গ্রেড) রয়েছে

  • isUserInteractionEnabled ইউআইভিউয়ের একটি সম্পত্তি (ইউআইসিএন্ট্রোলের সুপার ক্লাস) এবং উদ্দেশ্যটি অর্জন করলেও এর কোনও চাক্ষুষ প্রভাব নেই

ব্যবহার:

myButton.isEnabled = false // Recommended approach

myButton.isUserInteractionEnabled = false // Alternative approach

তুমি জানো কেন আমি এই ত্রুটি পাচ্ছি? Value of type '(AnyObject) -> ()' has no member 'isEnabled'

আমিও একটি ত্রুটি যদি আমি পরিবর্তন পেতে (_ sender: )করতে UIButton। ত্রুটিটি পড়েছে:Value of type '(UIButton) -> ()' has no member 'isEnabled'

0

আসুন সুইফট ৪-তে বলি আপনার কাছে একটি সেগুনের মতো এটির IBActionমতো একটি বোতাম সেট আপ হয়েছে @IBAction func nextLevel(_ sender: UIButton) {}এবং আপনার অ্যাপ্লিকেশনটির মধ্যে আপনার অন্যান্য ক্রিয়াকলাপ রয়েছে (যেমন একটি টাইমার, গেমপ্লে ইত্যাদি)। সেগু বোতামটি অক্ষম করার পরিবর্তে, অন্যান্য ক্রিয়াগুলি এখনও চলছে এবং অ্যাপ্লিকেশনটি ক্র্যাশ না করে আপনি নিজের ব্যবহারকারীকে সেগুটি ব্যবহার করার বিকল্পটি দিতে পারেন । এখানে কীভাবে:

var appMode = 0

@IBAction func mySegue(_ sender: UIButton) {

    if appMode == 1 {  // avoid crash if button pressed during other app actions and/or conditions
        let conflictingAction = sender as UIButton
        conflictingAction.isEnabled = false
    }
}

দয়া করে নোট করুন যে আপনার সম্ভবত if appMode == 0এবং / অথবা এর মধ্যে অন্য শর্ত থাকতে if appMode == 1পারে এবং এটি এখনও ঘটবে এবং mySegueবোতামটির সাথে বিরোধ নয় । সুতরাং, ক্র্যাশ থেকে দূরে থাকা


0

কোডটি দিয়ে বাটনটি সুইফট 4 এ অক্ষম করা যায়

@IBAction func yourButtonMethodname(sender: UIButon) {
 yourButton.isEnabled = false 
}

আপনি যদি আপনার কোড চেষ্টা করেন তবে এই ত্রুটিটি হওয়া উচিত:Value of type '(AnyObject) -> ()' has no member 'isEnabled'

আমার মনে হয় তুমি বোঝাতে চাইছ yourButton(sender: UIButton)। আপনার আপডেট হওয়া কোডটি নিম্নলিখিত ত্রুটির কারণ হতে পারে:Value of type '(UIButton) -> ()' has no member 'isEnabled'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.