মাল্টলাইন ইউআইটিেক্সটফিল্ড কীভাবে তৈরি করবেন?


259

আমি এমন একটি অ্যাপ্লিকেশন বিকাশ করছি যেখানে ব্যবহারকারীর কিছু তথ্য লিখতে হবে। এই উদ্দেশ্যে আমার একটি UITextFieldমাল্টি-লাইন প্রয়োজন (সাধারণভাবে UITextFieldএকটি একক লাইন)।

আমি গুগলিং হিসাবে আমি এই উদ্দেশ্যে ব্যবহার UITextViewনা করে ব্যবহার করার একটি উত্তর খুঁজে পাই UITextfield


এই উদ্দেশ্যে আমি ঠিক লিখেছিলাম এমন ছোট্ট নিয়ন্ত্রণ is এটিতে মাল্টলাইন সমর্থন এবং কীবোর্ড বন্ধ করার জন্য সম্পন্ন বোতামও রয়েছে। এটিকে বিনা দ্বিধায় কোড.google.com/p/galtextfield
গ্যাল ব্ল্যাঙ্ক

2
এই তৃতীয় পক্ষের ক্লাসগুলি ব্যবহার করুন আপনার এক্সকোড প্রকল্পটি আমদানি করুন এবং এটি ব্যবহার করুন এটি খুব ভাল লিঙ্কে কাজ করছে: github.com/adonoho/HPGrowingTextView
mahesh chowdary

উত্তর:


435

UITextField বিশেষত কেবল এক-লাইন।

আপনার গুগল অনুসন্ধানটি সঠিক, আপনাকে মাল্টিলাইন পাঠ্য প্রদর্শন এবং সম্পাদনার UITextViewপরিবর্তে ব্যবহার করতে হবে UITextField

ইন্টারফেস বিল্ডারে, UITextViewআপনি যেখানে চান সেখানে একটি যুক্ত করুন এবং "সম্পাদনযোগ্য" বাক্সটি নির্বাচন করুন। এটি ডিফল্টরূপে মাল্টলাইন হবে।


7
সুতরাং দয়া করে আমাকে বলুন কীভাবে দেশীয় ক্যালেন্ডার অ্যাপ্লিকেশনটি ইভেন্ট সংযোজনকারী স্ক্রিনে নোটগুলির জন্য স্থানধারক এবং শব্দের মোড়ক দিয়ে ভিউ করে?
গেন্নাদি রাইবকিন

3
ইউআইটিেক্সটভিউয়ের জন্য স্থানধারক কীভাবে সেট করবেন?
মণি

4
আপনি টেক্সটভিউতে স্থানধারক যুক্ত করতে পারবেন না, তবে আপনি টেক্সটভিউয়ের উপর একটি ধূসর লেবেল যুক্ত করতে পারেন এবং ব্যবহারকারী কিছু পাঠ্য ইনপুট দিলে এটি লুকিয়ে রাখতে পারেন।
অ্যান্ড্রু রোমানভ

নিম্নলিখিত প্রশ্নে কেউ আমাকে সাহায্য করতে পারেন? যদি ইউআইটিেক্সটভিউতে বুলেটযুক্ত পাঠ্য (একাধিক লাইন ব্রেক) লিখিত হয়, তবে লাইন ব্রেকগুলির মোট সংখ্যা কীভাবে সনাক্ত করবেন?
মারকাস

@ মারকাস এর জন্য আপনার একটি নতুন প্রশ্ন খোলা উচিত
নাথান এফ।

20

আপনি ইউআইটিেক্সটভিউ ব্যবহার করে একটি ইউআইটিেক্সটফিল্ড জাল করতে পারেন। আপনার সমস্যাটি হ'ল আপনি স্থানধারকের কার্যকারিতা হারাবেন।

আপনি যদি কোনও ইউআইটিএক্সেক্সটভিউ ব্যবহার করা চয়ন করেন এবং স্থানধারকের প্রয়োজন হয় তবে এটি করুন:

আপনার ভিউডিডলয়েডে স্থানধারকদের রঙ এবং পাঠ্য সেট করুন:

myTxtView.textColor = .lightGray
myTxtView.text = "Type your thoughts here..."

তারপরে আপনার ইউআইটিেক্সটভিউ নির্বাচন করা হলে স্থানধারককে অদৃশ্য করে দিন:

func textViewDidBeginEditing (textView: UITextView) {
    if myTxtView.textColor.textColor == ph_TextColor && myTxtView.isFirstResponder() {
        myTxtView.text = nil
        myTxtView.textColor = .white
    }
}

যখন ব্যবহারকারী সম্পাদনা শেষ করেন, নিশ্চিত হন যে এর কোনও মান আছে। যদি তা না থাকে তবে আবার স্থানধারক যুক্ত করুন:

func textViewDidEndEditing (textView: UITextView) {
    if myTxtView.text.isEmpty || myTxtView.text == "" {
        myTxtView.textColor = .lightGray
        myTxtView.text = "Type your thoughts here..."
    }
}

অন্যান্য বৈশিষ্ট্যগুলি যা আপনাকে জাল করার প্রয়োজন হতে পারে:

ইউআইটিেক্সটফিল্ড প্রায়শই প্রতিটি অক্ষরকে মূলধন করে তোলে, আপনি সেই বৈশিষ্ট্যটি ইউআইটিএবলভিউতে যুক্ত করতে পারেন:

myTxtView.autocapitalizationType = .words

ইউআইটিেক্সটফিল্ড সাধারণত স্ক্রোল করে না:

myTxtView.scrollEnabled = false

18

ঠিক আছে আমি এটি কিছু কৌশল দিয়ে করেছি;) প্রথমে একটি তৈরি করুন UITextFieldএবং এটি এর sizeমতো বৃদ্ধি পেয়েছে :

CGRect frameRect = textField.frame;
        frameRect.size.height = 53;
        textField.frame = frameRect;

তারপরে UITextViewআপনি আমার যে জায়গাটি তৈরি করেছেন ঠিক একই জায়গায় ঠিক এটি তৈরি করুন UITextFieldএবং এটি মুছে ফেলুন background color। এখন দেখে মনে হচ্ছে আপনার একাধিক লাইন রয়েছে TextField!


2
আমি অটো লেআউট ব্যবহার করেছি এবং ইউআইটিেক্সটফিল্ডের সমস্ত দিকটি ইউআইটিেক্সটভিউতে পিন করেছি। সত্যিই দুর্দান্ত কৌশল, ধন্যবাদ!
ফাতেমন

দয়া করে @ ফ্যান্টম্যান, আপনি কি আমাদের অটো লেআউটটির জন্য কোডটি প্রদর্শন করতে পারেন?
এস্তেভে

8
এটি তৈরি করে a UITextView। ইউআইটিেক্সটফিল্ড থাকার বিষয়টি হ'ল এটি একটি এর চেয়ে আলাদা আচরণ করে UITextView
নাট সিমার

2
মধ্যে পার্থক্য একটি গুচ্ছ আছে UITextViewএবং UITextfieldতারা থেকে উত্তরাধিকারী UIScrollViewবনাম UIControlনা-সম্পাদনযোগ্য-বাই-ডিফল্ট বনাম সম্পাদনাযোগ্য-বাই-ডিফল্ট, একাধিক লাইন বনাম একক লাইন, বিভিন্ন প্রতিনিধি প্রোটোকল, নো-স্থানধারক বনাম প্লেসহোল্ডার।
স্যাম বালান্টিনি

UITextViewপাঠ্য অনুচ্ছেদের জন্য। আপনার পাঠ্যের অনুচ্ছেদের প্রয়োজন হলে এটি ব্যবহার করুন, অন্যথায় নয়।
স্যাম ব্যাল্যান্টিন

9

একাধিক লাইন আচরণ ছাড়াও, ইউআইটিেক্সটভিউ এবং ইউআইটিেক্সটফিল্ডের মধ্যে মূল পার্থক্য হ'ল ইউআইটিেক্সটভিউ কোনও স্থানধারকের প্রস্তাব দেয় না। এই সীমাবদ্ধতা বাইপাস করতে, আপনি একটি "নকল স্থানধারক" সহ একটি ইউআইটিেক্সটভিউ ব্যবহার করতে পারেন।

বিশদের জন্য এই এই প্রশ্নটি দেখুন: ইউআইটিেক্সটভিউতে স্থানধারক


2

আপনার যদি অবশ্যই 2 টি লাইনের পাঠ্য সহ একটি ইউআইটিেক্সটফিল্ড থাকে তবে একটি বিকল্প হ'ল পাঠের দ্বিতীয় লাইনের জন্য ইউআইটিেক্সটফিল্ডের একটি সংক্ষিপ্তসার হিসাবে একটি ইউআইএলবেল যুক্ত করা। আমার অ্যাপটিতে আমার একটি ইউআইটিেক্সটফিল্ড রয়েছে যা ব্যবহারকারীরা প্রায়শই ট্যাপ করে সম্পাদনযোগ্য তা বুঝতে পারেন না এবং আমি ইউআইটিেক্সটফিল্ডে "সম্পাদনা করতে আলতো চাপুন" বলে কিছু ছোট সাবটাইটেল পাঠ্য যুক্ত করতে চেয়েছিলাম।

CGFloat tapLlblHeight = 10;
UILabel *tapEditLbl = [[UILabel alloc] initWithFrame:CGRectMake(20, textField.frame.size.height - tapLlblHeight - 2, 70, tapLlblHeight)];
tapEditLbl.backgroundColor = [UIColor clearColor];
tapEditLbl.textColor = [UIColor whiteColor];
tapEditLbl.text = @"Tap to Edit";

[textField addSubview:tapEditLbl];

2

হ্যাঁ, আপনি যা খুঁজছেন তা ইউআইটিেক্সটভিউ। আপনাকে কিছু জিনিস আলাদাভাবে মোকাবেলা করতে হবে (রিটার্ন কী হিসাবে) তবে আপনি এতে পাঠ্য যোগ করতে পারেন এবং খুব বেশি পাঠ্য থাকলে সেখানে আপনাকে নীচে এবং উপরে স্ক্রোল করতে দেয়।

এই লিঙ্কটিতে ডেটা প্রবেশের জন্য একটি স্ক্রিন তৈরি করার তথ্য রয়েছে:

একটি ডাটা এন্ট্রি স্ক্রিন তৈরি করুন


1

ইউআইটিেক্সটফিল্ডের পরিবর্তে ইউআইটিএক্সেক্সটভিউ ব্যবহার করুন


0

উপরের অংশে h4xxr এর উত্তরের পরিপূরক, ইউআইটিেক্সটফিল্ডের উচ্চতা সামঞ্জস্য করার সহজ উপায় হ'ল বৈশিষ্ট্য পরিদর্শক-> পাঠ্য ক্ষেত্রের বর্গাকার সীমানা শৈলী নির্বাচন করা। (ডিফল্টরূপে, ইউআইটিেক্সটফিল্ডের বর্ডার স্টাইলটি উপবৃত্ত হয়))

তথ্যসূত্র: এখানে ব্রায়ান উত্তর দিয়েছেন: ইউআইটিএফেক্সটফিল্ডের উচ্চতা কীভাবে সেট করবেন?


-1

আমার জন্য আরও একটি বিকল্প কাজ করেছে:

সাবক্লাস ইউআইটিেক্সটফিল্ড এবং ওভাররাইট:

- (void)drawTextInRect:(CGRect)rect

এই পদ্ধতিতে আপনি উদাহরণস্বরূপ করতে পারেন:

    NSDictionary *attributes = @{ NSFontAttributeName : self.font,
                                  NSForegroundColorAttributeName : self.textColor };

    [self.text drawInRect:verticalAlignedRect withAttributes:attributes];

এই কোডটি পাঠ্য রেন্ডার করবে যতটা রেখাঙ্কন প্রয়োজন হিসাবে প্রয়োজনীয় যদি রে্যাক্টের যথেষ্ট জায়গা থাকে। আপনার প্রয়োজনের উপর নির্ভর করে আপনি অন্য কোনও বৈশিষ্ট্য নির্দিষ্ট করতে পারেন।

ব্যবহার করবেন না:

self.defaultTextAttributes

যা এক লাইনের পাঠ্য রেন্ডারিংয়ে বাধ্য করবে

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