আইওএস 10-এ ইউআইটিেক্সটভিউয়ের শীর্ষে ফাঁকা জায়গা


116

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

আমি কোনও কন্টেন্ট অফসেট সেট করি নি। সাহায্য করুন!

উত্তর:


217

একটি পাঠ্য দর্শন হ'ল একটি স্ক্রোল ভিউ। দেখুন নিয়ন্ত্রকরা ভিউ স্ক্রোল করতে স্বয়ংক্রিয়ভাবে অফসেট করা একটি সামগ্রী যুক্ত করবেন, ধারণা করা হয় যে তারা এনএভি বার এবং স্থিতি বারের পিছনে স্ক্রোল করতে চাইবে।

এটি প্রতিরোধ করতে, পাঠ্য দর্শনযুক্ত ভিউ কন্ট্রোলারে নিম্নলিখিত সম্পত্তিটি সেট করুন:

self.automaticallyAdjustsScrollViewInsets = NO

7
এটি আরও ভাল উত্তর কারণ এটি কেবলমাত্র সমস্যাটিকে সংশোধন করার জন্যই নয়, কেন এটি প্রথম স্থানে ঘটে।
স্টিফেন মেলভিন

1
বিটিডাব্লু, আপনার সাবক্লাস এবং ওভাররাইড করতে হবে না। আপনি ইউআইটিেক্সটভিউ ইনস্ট্যান্ট করার পরে কেবল স্বয়ংক্রিয়ভাবে অ্যাডজাস্টসস্ক্রোলভিউইনসেটগুলি সেট করুন।
লেফটসপিন

1
@ লেফটস্পিন এটি একটি চমত্কার বিরল ক্ষেত্রে যেখানে আপনি কোনও ভিউ কন্ট্রোলারকে সাবক্ল্যাস করেননি। এবং পদ্ধতিটি ওভাররাইড করার অর্থ আপনার কোডটি এখনও কম আইওএস সংস্করণগুলিতে কাজ করবে - সম্পত্তি নির্ধারণের অর্থ আপনার প্রথমে একটি সামঞ্জস্যতা পরীক্ষা করা দরকার।
jrturton

1
সুতরাং যদি আমার মডেল ভিউ কন্ট্রোলার ইউআইএনএভিগেশন কন্ট্রোলারের বাইরে থাকে তবে অফসেটটি সাফ হয়ে যাবে? এটি এক ধরণের পাগল ... আমার পাঠ্যদর্শনটি শীর্ষে প্রান্তিক করা হলে এই আচরণটি কেবলমাত্র সঠিক, অন্যথায় এটি আবর্জনা ... অ্যাপল কেন এমন কিছু করেছে তা কি কেউ ব্যাখ্যা করতে পারেন?
পল ব্রিউকজিনস্কি

@ জার্টার্টন এটি একটি পুরানো পোস্ট হওয়ার জন্য ক্ষমা চেয়েছেন এবং দয়া করে ক্ষমা করবেন কারণ আমি উদ্দেশ্য-সি তে নতুন কিন্তু এটি বর্তমানে ইউআইভিউকন্ট্রোলারের সম্পত্তি ... এটি কি কোনও পদ্ধতি ছিল?
ক্রেগ

58

আয়রনম্যানগিল যে বর্তমান উত্তর দিয়েছেন তা ভাল সমাধান নয়, কারণ সমস্যাটি কেন প্রথম স্থানে হয় তা বোঝার ভিত্তিতে নয়।

Jrturton এর উত্তরও এটি সমাধানের সবচেয়ে পরিষ্কার উপায় নয়। আপনার ওভাররাইড করার দরকার নেই। সহজবোধ্য রাখো!

আপনার যা যা দরকার তা হ'ল নিম্নলিখিতগুলি সেট করা:

self.automaticallyAdjustsScrollViewInsets = NO;

ভিউডিডলড পদ্ধতিতে।

দস্তাবেজগুলি দেখুন: https://developer.apple.com/docamentation/uikit/uiviewcontroller/1621372-automaticadjustsscrolviewin


1
স্টোরিবোর্ডে পরিবর্তন করুন সম্ভবত কখনও কখনও এটি আরও ভাল। "পরিচয় পরিদর্শক" -> "ব্যবহারকারী সংজ্ঞায়িত রানটাইম বৈশিষ্ট্য" এ যান এবং সেখানে একটি সংজ্ঞা যুক্ত করুন।
hufeng03

automaticallyAdjustsScrollViewInsets অবচয় করা হয়। IOS11, ব্যবহার থেকেcontentInsetAdjustmentBehavior
Coeur

47

ইন্টারফেস বিল্ডারে,

  • ইউআইটিেক্সটভিউ সমেত ভিউ কন্ট্রোলারটি নির্বাচন করুন।
  • বৈশিষ্ট্য পরিদর্শকের কাছে যান।
  • "স্ক্রোল দেখার ইনসেটগুলি সামঞ্জস্য করুন" আনচেক করুন।

এটি আইওএস 8
প্লাটিনর

3
দ্রষ্টব্য: এটি ইউআইভিউউকন্ট্রোলারের সম্পত্তি। এটি খুঁজে পেল না এবং তারপরে বুঝতে পেরেছিলাম আমি টেক্সটটি পুরোপুরি
পড়িনি


24

যান Interface Builder:

  1. view controllerএতে আপনার নির্বাচন করুনtext view
  2. আনচেক Adjusts Scroll View Insetsসম্পত্তি

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


এই আমি খুঁজছিলাম ছিল। এছাড়াও আপনি এটি নিয়ন্ত্রণকারীর সাথে 'সেলফ অটোমেটিক অ্যাডজাস্টসস্ক্রোলভিউআইনসেটস = মিথ্যা' যোগ করে এটি করতে পারেন
কোডওভারআরাইড

এটি একটি ভাল এবং সরল উত্তর, এটি "কেন এই পাঠ্যটি প্রদর্শিত হচ্ছে না" এর জন্য আমার অনুসন্ধান শেষ করার জন্য ঘটেছিল।
আপসম্প্লার

10

আমি সত্যিই ভাবছি যদি এটি একটি আসল বৈশিষ্ট্য হয় ... তবে এই 64৪ পয়েন্টের স্বয়ংক্রিয় ইনসেটটি কেবলমাত্র যখন যুক্ত হয় UIScrollViewবা যখনUITextView This৪ ভিউ কন্ট্রোলারের দৃশ্যের সমস্ত সাবভিউয়ের বৃহত্তর গভীরতা হিসাবে । উদাহরণস্বরূপ, যদি আপনি পিছনে কোনও ভিউ যোগ করেন (এখানে আমি জেড-বাফার সম্পর্কে কথা বলছি, ছড়িয়ে পড়া দেখছি না), এই point৪ পয়েন্ট ইনসেটটি স্বয়ংক্রিয়ভাবে যুক্ত হবে না।

উদাহরণস্বরূপ, এটি একটি ইনসেট যুক্ত করে:

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

এই ক্ষেত্রে, ইনসেটটি যোগ করা হয়নি:

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

এটি আমার কাছে সত্যই অদ্ভুত বলে মনে হচ্ছে… ওএস কেন ভিউটির প্রসারিত হবে কিনা তা সিদ্ধান্ত নেওয়ার জন্য দৃশ্যের গভীরতার দিকে কেন নজর দেবে?


6

সুইফটে (এক্সকোড 6)

 self.automaticallyAdjustsScrollViewInsets = false

জন্য এই রকম কোরো viewDidLoadটেক্সট দৃশ্য সঙ্গে দেখুন কন্ট্রোলার করুন।
সুরগাচ

automaticallyAdjustsScrollViewInsets অবচয় করা হয়। IOS11, ব্যবহার থেকেcontentInsetAdjustmentBehavior
Coeur

6

আপনি নিজের উপরের ফাঁকা স্থানটি এটি UITextViewযোগ করে মুছতে পারেন :

yourTextView.textContainerInset = UIEdgeInsetsZero;

5

আমি বিষয়টিকে অফসেটকে নেতিবাচক মান হিসাবে সেট করে এই সমস্যাটি সমাধান করেছি। এখানে সুইফট কোড।

yourTextView.setContentOffset(CGPoint(x: 0, y: -150), animated: true)

ইনসেটগুলি রাখার এবং ট্রান্সলুসেন্ট বারের নীচে স্ক্রোলিংয়ের এটিই সেরা সমাধান ছিল। আমি এই পরিবর্তনটি পরামর্শ দেব। [self.textView setContentOffset:CGPointMake(0.f, -self.topLayoutGuide.length) animated:NO];
ইনিজজোন

1
এ ছাড়া কিছুই আমার পক্ষে কাজ করেনি। সুইফ্ট, এক্সকোড 9.1।
অশোক

1

আপনার যা বুঝতে হবে তা হ'ল এটি নেভিগেশন বারের সাথে সম্পর্কিত:

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

1

আমি নিম্নলিখিত কৌশলটি চেষ্টা করেছিলাম, এটি কার্যকর হয়েছে।

- (void)viewDidLoad{
   self.textView.scrollEnabled = NO;  
}       
- (void)viewDidAppear:(BOOL)animated {
   [super viewDidAppear:animated];
   self.textView.scrollEnabled = YES;
}


0

এটি একটি পেশাদারহীন সমাধান, আমি নিশ্চিত ... তবে পাঠ্যদর্শনটির পিছনে একটি ফাঁকা লেবেল চাপানো সমস্যার সমাধান করে।


1
এটি কোনও সমাধান নয় =)
ইলকার বাল্টাচি

0

এটি কেবল আমার জন্য কাজ করেছে (আইওএস 7 থেকে উপলব্ধ)

[<#your UITextViewInstance#> setTextContainerInset:UIEdgeInsetsZero];
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.