উপস্থাপিত উত্তরগুলির সাথে কোনও ভুল নেই; তবে আমি জারজারারের উত্তরটি প্রসারিত করতে চেয়েছিলাম কারণ এতে আশ্চর্যজনক সম্ভাবনা রয়েছে যা অন্যান্য নিয়ন্ত্রণের সাথে একই সমস্যাটির মূল্য দিতে পারে (যেমন সার্চবার)। এটি কারণ যেহেতু পয়েন্টআইনসাইডটি কোনও ইউআইভিউয়ের সাথে সংযুক্ত, তাই স্পর্শের অঞ্চলটি উন্নত করতে যে কোনও নিয়ন্ত্রণ সাবক্লাস করতে সক্ষম । এই উত্তরটি সম্পূর্ণ সমাধানটি কীভাবে বাস্তবায়ন করতে পারে তার একটি সম্পূর্ণ নমুনা দেখায়।
আপনার বোতামের জন্য একটি নতুন সাবক্লাস তৈরি করুন (বা কোনও নিয়ন্ত্রণ)
#import <UIKit/UIKit.h>
@interface MNGButton : UIButton
@end
পরবর্তী আপনার সাবক্লাস বাস্তবায়নে পয়েন্টআইনসাইড পদ্ধতিটি ওভাররাইড করুন
@implementation MNGButton
-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
//increase touch area for control in all directions by 20
CGFloat margin = 20.0;
CGRect area = CGRectInset(self.bounds, -margin, -margin);
return CGRectContainsPoint(area, point);
}
@end
আপনার স্টোরিবোর্ড / এক্সিব ফাইলটিতে প্রশ্নে নিয়ন্ত্রণ নির্বাচন করুন এবং পরিচয় পরিদর্শকটি খুলুন এবং আপনার কাস্টম শ্রেণীর নামে টাইপ করুন।
আপনার ইউআইভিউকন্ট্রোলার ক্লাসে বোতামটি ধারণ করার জন্য, বোতামটির শ্রেণীর ধরণটি আপনার সাবক্লাসের নামে পরিবর্তন করুন।
@property (weak, nonatomic) IBOutlet MNGButton *helpButton;
আপনার স্টোরিবোর্ড / এক্সিব বোতামটি আইবিআউটলেট বৈশিষ্ট্যের সাথে যুক্ত করুন এবং সাবক্লাসে সংজ্ঞায়িত অঞ্চলটি ফিট করার জন্য আপনার স্পর্শ অঞ্চলটি প্রসারিত হবে।
সিজিআরেক্টইনসেট এবং সিজিআরেক্ট কনটেনসপয়েন্ট পদ্ধতিগুলির সাথে একত্রে পয়েন্টআইনসাইড পদ্ধতিটি ওভাররাইড করা ছাড়াও , কোনও ইউআইভিউ সাবক্লাসের আয়তক্ষেত্রাকার স্পর্শের ক্ষেত্রটি বাড়ানোর জন্য সিজিজিওট্রিটি পরীক্ষা করতে সময় নেওয়া উচিত । এছাড়াও আপনি CGGeometry ব্যবহার-ক্ষেত্রে কিছু চমৎকার টিপস খুঁজে পেতে পারেন NSHipster ।
উদাহরণস্বরূপ, কেউ উপরে বর্ণিত পদ্ধতিগুলি ব্যবহার করে স্পর্শ অঞ্চলটিকে অনিয়মিত করে তুলতে পারে বা প্রস্থের স্পর্শ অঞ্চলটিকে অনুভূমিক স্পর্শের ক্ষেত্রের দ্বিগুণ করে তুলতে পছন্দ করতে পারে:
CGRect area = CGRectInset(self.bounds, -(2*margin), -margin);
নোট: যে কোনও ইউআই ক্লাস নিয়ন্ত্রণ স্থাপনের ক্ষেত্রে বিভিন্ন নিয়ন্ত্রণের (বা কোনও ইউআইভিউ সাবক্লাস, যেমন ইউআইআইমেজভিউ ইত্যাদির জন্য) স্পর্শের ক্ষেত্রটি বাড়ানোর ক্ষেত্রে একই ফলাফল পাওয়া উচিত।