একটি ইউআইটিেক্সটফিল্ডের কার্সারটি লুকান


137

আমি এর জন্য একটি এর UITextFieldসাথে ব্যবহার করছি , যাতে ব্যবহারকারী যখন পাঠ্য ক্ষেত্রটি ট্যাপ করেন, তখন একটি চয়নকারী তাদের কাছ থেকে কোনও বিকল্প নির্বাচন করার জন্য ডেকে আনা হয়।UIPickerViewinputView

প্রায় সমস্ত কিছুই কাজ করে তবে আমার একটি সমস্যা আছে: সক্রিয় অবস্থায় পাঠ্যক্ষেত্রে কার্সারটি এখনও জ্বলজ্বল করে যা কুৎসিত এবং অনুপযুক্ত, যেহেতু ব্যবহারকারীর ক্ষেত্রে ক্ষেত্রের মধ্যে টাইপ করা প্রত্যাশিত নয় এবং একটি কীবোর্ড দ্বারা উপস্থাপন করা হয়নি। আমি জানি আমি টেক্সট ফিল্ডে সেট editingকরে NOএবং এটিতে স্পর্শগুলি ট্র্যাক করে বা কাস্টম-স্টাইলযুক্ত বোতামের মাধ্যমে প্রতিস্থাপন করে এবং চয়নকারীকে কোডের মাধ্যমে ডেকে এই বিষয়টি হ্যাকলি সমাধান করতে পারি । তবে, আমি UITextFieldDelegateপাঠ্য ক্ষেত্রে সমস্ত ইভেন্ট পরিচালনা করার পদ্ধতিগুলি ব্যবহার করতে চাই এবং হ্যাকগুলি যেমন টেক্সট ক্ষেত্রটি একটি বোতামের মাধ্যমে প্রতিস্থাপনের অনুমতি দেয় না।

UITextFieldপরিবর্তে আমি কীভাবে সহজভাবে কার্সারটি আড়াল করতে পারি ?

উত্তর:


277

কেবলমাত্র সাবক্লাস ইউআইটিেক্সটফিল্ড এবং ওভাররাইড কেয়ারট্যাক্টরেক্টফরজ পজিশন

- (CGRect)caretRectForPosition:(UITextPosition *)position
{
    return CGRectZero;
}

2
সুন্দর! আমার জন্য একটি কবজ ভালো কাজ করে।
জো স্ট্রাউট

1
@ জোসেফ চিউ এটি দুর্দান্ত কাজ করে। তবে আইওএস ৪.৩ দিয়ে নয়। আপনি কি আমাকে এই সাহায্য করতে পারেন?
দিনেশ রাজা

দ্বিগুণ
উত্সাহের

1
শুধু একটি নোট. আমার সাবক্লাসে আমি একটি বুল হাইডকারেট যুক্ত করেছি তারপরে এই ওভাররাইডে যদি এটি সত্য হয় -> সিজিআরেক্টজিরো ফিরুন অন্যথায় সুপারের ফলাফলটি ফিরিয়ে দিন।
WCByrne

6
কেবল সচেতন থাকুন যে বাহ্যিক কীবোর্ডযুক্ত ব্যবহারকারীরা কার্সারটি লুকিয়ে থাকলেও এবং আপনি একটি চয়নকারী দৃশ্য ব্যবহার করেন এমনকি পাঠ্য ক্ষেত্রের মান পরিবর্তন করতে পারেন।
চিহ্নিত করুন

156

আইওএস 7 হিসাবে আপনি এখন কেবল tintColor = [UIColor clearColor]টেক্সটফিল্ডটি সেট করতে পারেন এবং ক্যারেটটি অদৃশ্য হয়ে যাবে।


1
এটি এই মুহূর্তে কাজ করে, তবে আমি এটি ব্যবহারের বিরুদ্ধে পরামর্শ দেব কারণ এটি ভবিষ্যতে পরিবর্তিত হতে পারে। বরং caretRectForPosition:ওভাররাইড সমাধানটি বেছে নিন ।
লিপকা

@ লিপকা সত্য, এটি সম্ভবত আরও ভাল উপায়।
যমোন

2
আপাতত যথেষ্ট ভাল কখনও কখনও আপনার কেবল একটি দ্রুত সমাধান প্রয়োজন।
গোল্ডেনজো

এটি এখন পর্যন্ত সবচেয়ে সহজ সমাধান!
জে কি।

1
এই উত্তরটি iOS এর জন্য 7+ অনুমোদিত হতে হবে
tryp

95

আপনি কেবল পাঠ্যক্ষেত্রের টিন্ট কালার সাফ করতে পারেন

self.textField.tintColor = [UIColor clearColor];

সুইফট 3.0

self.textField.tintColor = .clear

এখানে চিত্র বর্ণনা লিখুন


সবচেয়ে সহজ উত্তর।
নিক কোভ

2
উপরে উল্লিখিত হিসাবে, রঙের রঙ সাফ করা বাহ্যিক কীবোর্ড (আইপ্যাড প্রো) ব্যবহারকারীদের পাঠ্য পরিবর্তন করা থেকে বিরত রাখে না।
মাইকেল লং

@ মিশেললং এটি ব্যবহারকারীকে পাঠ্য পরিবর্তন করা থেকে বিরত করার বিষয়ে নয়, এটি কেবল স্টাইলিংয়ের পছন্দ।
জেআরআাম 13

21

আপনি ব্যবহারকারীকে কোনও পাঠ্য নির্বাচন করা, অনুলিপি করা বা আটকানো থেকে বিরত রাখতে চাইতে পারেন যাতে কেবল পাঠ্য ইনপুটটি পিকার ভিউ থেকে আসে।

- (CGRect) caretRectForPosition:(UITextPosition*) position
{
    return CGRectZero;
}

- (NSArray *)selectionRectsForRange:(UITextRange *)range
{
    return nil;
}

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(copy:) || action == @selector(selectAll:) || action == @selector(paste:))
    {
        returnNO;
    }

    return [super canPerformAction:action withSender:sender];
}

http://b2cloud.com.au/tutorial/disabling-the-caret-and-text-entry-in-uitextfields/


15

পরীক্ষা করে দেখুন সম্পত্তি selectedTextRange এর প্রোটোকল UITextInput , যা বর্গ UITextField কে কনর্ফাম করে। কয়েক! এটি ঠিক সেখানে অবজেক্ট ভিত্তিক প্রোগ্রামিংয়ের একটি পাঠ।

ক্যারেট লুকান

ক্যারেটটি আড়াল করতে পাঠ্যের ক্ষেত্রের নির্বাচিত পাঠ্য সীমাটি শূন্য করুন।

textField.selectedTextRange = nil; // hides caret

ক্যারেট আনহাইড

ক্যারেটটি প্রদর্শন না করার দুটি উপায় এখানে।

  1. নথির শেষে পাঠ্য ক্ষেত্রের নির্বাচিত পাঠ্য সীমাটি সেট করুন।

    UITextPosition *end = textField.endOfDocument;
    textField.selectedTextRange = [textField textRangeFromPosition:end
                                                        toPosition:end];
  2. ক্যারেট একই স্থানে রাখতে, প্রথমে পাঠ্য ক্ষেত্রের নির্বাচিত পাঠ্য সীমাটি একটি পরিবর্তনশীলে সঞ্চয় করুন store

    _textFieldSelectedTextRange = textField.selectedTextRange;
    textField.selectedTextRange = nil; // hides caret

    তারপরে, আপনি যখন ক্যারেটটি গোপন রাখতে চান, কেবল পাঠ্য ক্ষেত্রের নির্বাচিত পাঠ্য সীমাটি মূলত যা ছিল তার পিছনে সেট করুন:

    textField.selectedTextRange     = _textFieldSelectedTextRange;
    _textFieldLastSelectedTextRange = nil;

3
এই নির্দিষ্ট সমাধানটি আমার প্রয়োগের জন্য কার্যকর হয়নি। কার্সারটি এখনও জ্বলজ্বল করে।
আর্ট জিগেল

ঠিক আছে, তবে, সম্ভবত আপনার bugreport.apple.com এ একটি বাগ ফাইল করা উচিত কারণ আইওএস ডক্স বলছে: "পাঠ্যের ব্যাপ্তির দৈর্ঘ্য থাকলে এটি বর্তমানে নির্বাচিত পাঠ্যকে নির্দেশ করে। যদি এটির শূন্য দৈর্ঘ্য থাকে, তবে এটি ক্যারেটটি নির্দেশ করে বিন্দু)। যদি পাঠ্য-সীমা অবজেক্টটি শূন্য হয়, তবে এটি নির্দেশ করে যে কোনও বর্তমান নির্বাচন নেই ""
ma11 She28

4
আমি প্রতিবেদন দাখিল করার পক্ষে যথেষ্ট চিন্তা করি না। অন্যরা যদি আপনার "সমাধান" ব্যবহার করে এবং এটি কাজ করে না দেখেন আমি তাদের চেয়েছিলাম তারা একা নয়।
আর্ট জিগেল

@ আর্টজিগেলের মন্তব্য সত্ত্বেও, এটি আমার পক্ষে পুরোপুরি কার্যকর works যাইহোক, আমি ধরনের ওভাররাইড জড়িত সমাধান পছন্দ caretRectForPosition। এটি কী করছে তা আরও সুস্পষ্ট এবং আপনি যে দস্তাবেজগুলি উদ্ধৃত করেছেন সেগুলি 'বর্তমান নির্বাচন নেই' এমন সময় ক্যারেটের আচরণটি কী হওয়া উচিত তা পরিষ্কার করে না। @ আর্টজিগেলের দাবি যদি এটি কাজ করে না তবে এটি সঠিক ছিল (যা এটি নয়, কমপক্ষে যতদূর আমি দেখতে পাচ্ছি) এটি পরিষ্কার হবে না যে এটি একটি বাগ ছিল।
মার্ক আমেরিকা 2'13

আমার পক্ষেও কাজ করেনি। ক্যারেট এখনও আছে এবং জ্বলজ্বলে।
CW0007007

11

উত্তর না দেওয়া প্রশ্নের উত্তর ক্রমবর্ধমান প্রশ্নের উত্তর ক্রমবর্ধমান পুচ্ছ পরিষ্কার করতে সহায়তা সংস্থা থেকে অনুলিপি করা হয়েছে।

আমি আরও একটি সমাধান পেয়েছি: সাবক্লাস UIButtonএবং এই পদ্ধতিগুলিকে ওভাররাইড করে

- (UIView *)inputView {
    return inputView_;
}

- (void)setInputView:(UIView *)anInputView {
    if (inputView_ != anInputView) {
        [inputView_ release];
        inputView_ = [anInputView retain];
    }
}

- (BOOL)canBecomeFirstResponder {
    return YES;
}

এখন হিসাবে বোতামটির UIResponderতুলনায় অনুরূপ আচরণ রয়েছে UITextFieldএবং বাস্তবায়ন বেশ সোজা।


5
এটি আসলে একটি দুর্দান্ত সমাধান নয়। : নীচের এই উত্তরটি দেখুন stackoverflow.com/a/13660503/1103584
DiscDev

2
কেন এটি একটি দুর্দান্ত সমাধান নয়? এটি লক্ষ্যযুক্ত প্রভাব অর্জন করে এবং এমন কোনও শ্রেণীর কার্যকারিতা সরবরাহ করে যা এর আগে ছিল না। এটি হ্যাকও নয়। আমি মনে করি এটি সত্যিই দুর্দান্ত। তাহলে এতে কী সমস্যা?
BreadicalMD

2
@ ব্র্যাডিকালএমডি সবচেয়ে বড় সমস্যাটি আমি দেখতে পাচ্ছি হ'ল আপনি UITextFieldDelegateসম্পাদনা ইভেন্টগুলি পরিচালনা করতে এবং শেষ করতে এটির সাথে একটি ব্যবহার করতে পারবেন না । পরিবর্তে - যদি না সেই ঘটনাগুলি পরিচালনা করার উপায় না থাকে যেগুলি সম্পর্কে আমি জানি না - আপনাকে ওভাররাইড becomeFirstResponderএবং resignFirstResponderবোতাম সাবক্লাসে থাকা এবং সম্ভবত আপনার নিজস্ব প্রতিনিধি প্রোটোকল তৈরি করতে হবে, একটি delegateসম্পত্তি যুক্ত করতে হবে, এবং উপরে বর্ণিত প্রতিনিধিটিকে কল করুন পদ্ধতি। এটি কেবল caretRectForPositionএকটি UITextFieldসাবক্লাসে ওভাররাইডিংয়ের চেয়ে অনেক বেশি কাজ ।
মার্ক আমেরিকা

1
@ ব্র্যাডিক্যাল এমডি বলেছে যে, জোসেফ চিউর উত্তর যে কোনও ব্যবহারিক দিক থেকে উচ্চতর হওয়া সত্ত্বেও, আমি এখনও আপনার সাথে একমত যে এটি বেশ সেক্সি pretty আমি এর UIResponderআগে ক্লাসের রেফারেন্সটি কখনই সাবধানতার সাথে দেখিনি এবং এরকম কৌশল সম্ভবত সম্ভব কিনা তা আমার ধারণা ছিল না।
মার্ক আমেরিকা

পার্টিতে দেরীতে, তবে আমি মনে করি এটি একটি খুব ভাল সমাধান এবং এটি ব্যবহার করে UITextFieldএবং কার্সারটি আড়াল করার চেয়ে হ্যাকের চেয়ে অনেক বেশি উপযুক্ত এবং কম মনে হয়, এটি মূলত একটি হ্যাক যেহেতু আমরা তখন পাঠ্য ক্ষেত্রটিকে লেবেল হিসাবে ব্যবহার করছি এর কোনও কার্যকারিতা ব্যবহার করে না UITextField
রূপ্ট

7

নেট এর পোস্টের সুইফট 5 সংস্করণ

  override func caretRect(for position: UITextPosition) -> CGRect {
    return .zero
  }
  
  override func selectionRects(for range: UITextRange) -> [UITextSelectionRect] {
    return []
  }
  
  override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
    return false
  }

আমার ক্ষেত্রে এটি কাজ করে। সুইফট 4 ব্যবহার করে এই পদ্ধতিগুলির সাথে ইউআইটিেক্সটফিল্ডের একটি সাবক্লাস যুক্ত হয়েছে Thanks ধন্যবাদ!
জে ফেদেজ

3

ক্লিন্ট কালারে টিন্ট কালার সেট করুন

textfield.tintColor = [UIColor clearColor];

এবং আপনি ইন্টারফেস নির্মাতা থেকে সেট করতে পারেন


2
আপনি 2 বছর আগে সবেমাত্র একটি উত্তর অনুলিপি করেছেন।
অ্যাশলে মিলস

1
দুঃখিত আমার বন্ধু, কিন্তু আমি কিছুই অনুলিপি করা হয়নি।
আহমদ আল-আতল

4
এটি আকর্ষণীয়, "আমার বন্ধু"। আপনার উত্তরটি 1 ম '1515 থেকে @ ওল্ডমানের উত্তরের খুব কাছাকাছি দেখাচ্ছে। আপনারা কীভাবে আলাদা বলতে পারেন?
অ্যাশলে মিলস

1
উপরে উল্লিখিত হিসাবে, রঙের রঙ সাফ করা বাহ্যিক কীবোর্ড (আইপ্যাড প্রো) ব্যবহারকারীদের পাঠ্য পরিবর্তন করা থেকে বিরত রাখে না।
মাইকেল লং

প্রো ব্যবহারকারীরা যা খুশি তাই করতে পারে। তারা পেশাদার: তারা কী করছে তা তারা জানে; ^)
আন্তন ট্রপ্যাশকো

2

আপনি যদি কার্সারটি আড়াল করতে চান তবে আপনি এটি সহজেই ব্যবহার করতে পারেন! এটা আমার জন্য কাজ করেছে ..

[[textField valueForKey:@"textInputTraits"] setValue:[UIColor clearColor] forKey:@"insertionPointColor"]

3
যতদূর আমি জানি এটি অননুমোদিত। এটা সম্ভব যে এটি ব্যবহার করে আপনার অ্যাপটি প্রাইভেট এপিআইগুলিকে কল করার জন্য যদি আপনি অ্যাপ স্টোরটিতে জমা দেন তবে তা প্রত্যাখ্যান করা হবে, যদিও এই অনুমানটিকে একরকম বা অন্য কোনওভাবে পরীক্ষা করার জন্য এটি ব্যবহার করে আমার কোনও বিকাশ জানি না। এটি অত্যন্ত দুঃখের বিষয়, কারণ সাবক্লাসিং না করেই এই সমস্যাটি সমাধান করতে সক্ষম হওয়ায় ভালো লাগবে এবং এই উত্তর এটি সক্ষম করে।
মার্ক আমেরিকা

1

উত্তর না দেওয়া প্রশ্নের উত্তর ক্রমবর্ধমান প্রশ্নের উত্তর ক্রমবর্ধমান পুচ্ছ পরিষ্কার করতে সহায়তা সংস্থা থেকে অনুলিপি করা হয়েছে।

আমি মনে করি আমার কাছে সঠিক সমাধান আছে তবে এটির উন্নতি করা গেলে স্বাগত জানানো হবে :) ভাল, আমি ইউআইটিেক্সটফিল্ডের একটি সাবক্লাস তৈরি করেছি এবং সেই পদ্ধতিটি সীমানার জন্য সিজিআরেক্ট ফেরত পাঠিয়েছি

-(CGRect)textRectForBounds:(CGRect)bounds {
    return CGRectZero;
}

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

- (void)setText:(NSString *)aText {
    [super setText:nil];

    if (aText == nil) {
        textLabel_.text = nil;
    }

    if (![aText isEqualToString:@""]) {
        textLabel_.text = aText;
    }
}

এটি দিয়ে জিনিসটি প্রত্যাশার মতো কাজ করে। আপনি এটির উন্নতি করার কোনও উপায় জানেন?


এই উত্তরটি এখন মূলত মূল্যহীন যে এই যে জোসেফ চিউর বিকল্প পদ্ধতিটি খুব অনুরূপ তবে অনেক সহজ। আমি কি কেবল এটি মুছে ফেলার পরামর্শ দিতে পারি?
মার্ক আমেরিকা

1

কার্সার এবং মেনু উভয় অক্ষম করতে আমি এই 2 টি পদ্ধতির সাথে সাবক্লাস ব্যবহার করি:

- (CGRect)caretRectForPosition:(UITextPosition *)position {
    return CGRectZero;
}

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
    [UIMenuController sharedMenuController].menuVisible = NO;
    self.selectedTextRange = nil;

    return NO;
}

0

আমি কেবল সাবক্লাস করছি UITextFieldএবং নীচে ওভাররাইড করব layoutSubviews:

- (void)layoutSubviews
{
    [super layoutSubviews];
    for (UIView *v in self.subviews)
    {
        if ([[[v class] description] rangeOfString:@"UITextSelectionView"].location != NSNotFound)
        {
            v.hidden = YES;
        }
    }
}

এটি একটি নোংরা হ্যাক, এবং ভবিষ্যতে ব্যর্থ হতে পারে (কোন সময়ে কার্সারটি আবার দেখা যাবে - আপনার অ্যাপটি ক্রাশ হবে না), তবে এটি কার্যকর হয়।


-1

আপনি সম্পর্কিত জিনিসগুলির মাধ্যমে কোনও বিভাগে একটি BOOL cursorlessসম্পত্তি UITextFieldযুক্ত করতে পারেন।

@interface UITextField (Cursorless)

@property (nonatomic, assign) BOOL cursorless;

@end

তারপরে সুইজল করার জন্য মেথড সুইজলিং ব্যবহার করুন এবং এটির ডিফল্ট মান ব্যবহার করে caretRectForPosition:টগল করে gCGRectZerocursorless

এটি ড্রপ-ইন বিভাগের মাধ্যমে একটি সাধারণ ইন্টারফেসে নিয়ে যায়। এটি নিম্নলিখিত ফাইলগুলিতে প্রদর্শিত হয়।

কেবল এগুলিতে ফেলে দিন এবং এই সাধারণ ইন্টারফেসের সুবিধা পান

UITextFieldবিভাগ: https://github.com/rexmas/RexDK/blob/master/RexDK/UI/UITextField%2 BRXCursorless.h https://github.com/rexmas/RexDK/blob/master/RexDK/UI/UITextField%2BRXCursorless .m

পদ্ধতি সুইজলিং: https://github.com/rexmas/RexDK/blob/master/RexDK/Foundation/NSObject%2 BRXRuntimeAdditions.h https://github.com/rexmas/RexDK/blob/master/RexDK/Foundation/NSObject% 2BRXRuntimeAdditions.m


অনেক স্তরের উপর একটি খারাপ সমাধান! প্রারম্ভিকদের জন্য: বিভাগগুলিতে কখনই পদ্ধতিগুলিকে ওভাররাইড করবেন না। আপনার সত্যিকারের প্রয়োজন না হলে পদ্ধতি সাঁতার কাটা এড়িয়ে চলুন (অন্যরা এই প্রশ্নের ভাল সমাধান নিয়ে এসেছেন)। এটি আপনার কোডটিকে আরও জটিল করে তোলে।
এসবেনবি

আপনি যদি কোডটি আসলে দেখে থাকেন তবে আপনি বুঝতে পেরেছেন যে কোনও পদ্ধতি বিভাগে ওভাররাইড করা হয়নি এবং পদ্ধতি সুইজলিং সঠিকভাবে প্রয়োগ করা হয়েছে। আমি ব্যর্থতা ছাড়াই বছরের পর বছর ধরে এই বাস্তবায়নটি ব্যবহার করে আসছি।
o

এছাড়াও, ধারাবাহিকভাবে পুনরাবৃত্তি হওয়া সমস্যাটি স্থায়ীভাবে সমাধান করতে ~ 150 লাইনের বিচ্ছিন্ন কোড বেস যুক্ত করার বিষয়ে কী জটিল তা ব্যাখ্যা করুন? এটি কেবল আপনার কোডবেসকে জটিল করে তুলবে না তবে এটি সম্ভবতমতম ইন্টারফেস সরবরাহ করে; কার্যকারিতা নির্ধারণ করার জন্য একটি বুলিয়ান।
দুর্দান্ত-ও

পদ্ধতি swizzling সম্পর্কে এই চমৎকার আলোচনা কটাক্ষপাত করা stackoverflow.com/questions/5339276/... ডিবাগ করতে বিশেষ ভাবে। পদ্ধতি সুইজলিং একটি আশ্চর্যজনক বৈশিষ্ট্য, তবে আইএমএইচও কেবলমাত্র যখন প্রয়োজন তখন ব্যবহার করা উচিত। এখানে সরবরাহিত পরামর্শগুলির মধ্যে একটি ব্যবহার করে এই সমস্যাটি সমাধান করা সহজ, এবং অন্যান্য প্রোগ্রামারদের বজায় রাখতে এবং পড়তে কোড সহজতর করে।
এসবেবেন

আমি এটি আগে পড়েছি এবং আমি আমার বাস্তবায়নের যথাযথতার জন্য সমস্ত রূপরেখা নির্দেশিকা অনুসরণ করেছি। তর্কসাপেক্ষভাবে, পদ্ধতিটি সুইজলিং কখন জিতবে তার একটি দৃ solid় উদাহরণ। এটি একটি বিচ্ছিন্ন, তবুও সাধারণ ক্ষেত্রে যেখানে মৌলিক গ্রন্থাগারগুলি প্ল্যাটফর্মগুলিতে একটি সহজ পদ্ধতিতে ব্যাপকভাবে প্রয়োজনীয় বৈশিষ্ট্যটি প্রয়োগ করতে ব্যর্থ হয়। প্রস্তাবিত অন্যান্য উদাহরণগুলি শব্দার্থবিহীনভাবে একটি কার্সারবিহীন পাঠ্যক্ষেত্রের সংজ্ঞা দেয় না, তারা কেবল কার্সারের ফ্রেম বা বর্ণের হয় নিভৃত হয়ে এটি সম্পাদন করে। নতুন প্রোগ্রামারের কাছে, এই ইন্টারফেসটি পড়ার পক্ষে সহজ এবং এটির থেকে প্রত্যাশা করা ঠিক কী করে।
অদ্ভুত -১
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.