मुझे अपने iOS ऐप में कीबोर्ड की दृश्यता की स्थिति की जांच करनी होगी।
स्यूडोकोड:
if(keyboardIsPresentOnWindow) {
//Do action 1
}
else if (keyboardIsNotPresentOnWindow) {
//Do action 2
}
मैं इस स्थिति की जांच कैसे कर सकता हूं?
मुझे अपने iOS ऐप में कीबोर्ड की दृश्यता की स्थिति की जांच करनी होगी।
स्यूडोकोड:
if(keyboardIsPresentOnWindow) {
//Do action 1
}
else if (keyboardIsNotPresentOnWindow) {
//Do action 2
}
मैं इस स्थिति की जांच कैसे कर सकता हूं?
जवाबों:
… या आसान तरीका अपनाएं:
जब आप एक टेक्स्टफ़िल्ड दर्ज करते हैं, तो यह पहली प्रतिक्रिया हो जाती है और कीबोर्ड प्रकट होता है। आप कीबोर्ड की स्थिति की जांच कर सकते हैं [myTextField isFirstResponder]
। यदि यह वापस आता है YES
, तो कीबोर्ड सक्रिय है।
ड्रोनवर्डवर्ड का कोड बहुत करीब है, लेकिन UIKit के नेमस्पेस से टकरा जाता है और इसे इस्तेमाल करना आसान बनाया जा सकता है।
@interface KeyboardStateListener : NSObject {
BOOL _isVisible;
}
+ (KeyboardStateListener *)sharedInstance;
@property (nonatomic, readonly, getter=isVisible) BOOL visible;
@end
static KeyboardStateListener *sharedInstance;
@implementation KeyboardStateListener
+ (KeyboardStateListener *)sharedInstance
{
return sharedInstance;
}
+ (void)load
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
sharedInstance = [[self alloc] init];
[pool release];
}
- (BOOL)isVisible
{
return _isVisible;
}
- (void)didShow
{
_isVisible = YES;
}
- (void)didHide
{
_isVisible = NO;
}
- (id)init
{
if ((self = [super init])) {
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(didShow) name:UIKeyboardDidShowNotification object:nil];
[center addObserver:self selector:@selector(didHide) name:UIKeyboardWillHideNotification object:nil];
}
return self;
}
@end
+load
एक विशेष विधि है जिसे ऑब्जेक्टिव-सी रनटाइम कहा जाता है। यह ऐप बाइनरी लोड के बाद प्रत्येक वर्ग के लिए कहा जाता है, लेकिन main()
फ़ंक्शन में प्रवेश करने से पहले । इस बात की कोई गारंटी नहीं है कि एक ऑटोरेलिस पूल लाइव होगा।
NSAutoreleasePool
alloc
/ release
अब में कोड के आसपास के द्वारा बदला जा सकता है@autoreleasepool { }
एक बनाएं UIKeyboardListener
जब आप जानते हैं कुंजीपटल नहीं दिखाई फोन करके उदाहरण के लिए, [UIKeyboardListener shared]
से applicationDidFinishLaunching
।
@implementation UIKeyboardListener
+ (UIKeyboardListener) shared {
static UIKeyboardListener sListener;
if ( nil == sListener ) sListener = [[UIKeyboardListener alloc] init];
return sListener;
}
-(id) init {
self = [super init];
if ( self ) {
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(noticeShowKeyboard:) name:UIKeyboardDidShowNotification object:nil];
[center addObserver:self selector:@selector(noticeHideKeyboard:) name:UIKeyboardWillHideNotification object:nil];
}
return self;
}
-(void) noticeShowKeyboard:(NSNotification *)inNotification {
_visible = true;
}
-(void) noticeHideKeyboard:(NSNotification *)inNotification {
_visible = false;
}
-(BOOL) isVisible {
return _visible;
}
@end
+(void)load
इस श्रोता वर्ग पर इनिट को कॉल करने के लिए उपयोग कर सकते हैं, ताकि यह किसी भी प्रोजेक्ट में ड्रैग-एंड-ड्रॉप के रूप में काम करेगा और आपको कहीं भी इनिट याद रखने की बजाय दूसरे ऐप लॉन्च से आरंभ कर सके।
मुझे लगता है कि आपको कीबोर्ड के बारे में दी गई सूचनाओं का उपयोग करने की आवश्यकता है:
कीबोर्ड सूचनाएं
जब सिस्टम कीबोर्ड को दिखाता या छिपाता है, तो यह कई कीबोर्ड सूचनाएं पोस्ट करता है। इन सूचनाओं में कीबोर्ड के बारे में जानकारी होती है, जिसमें इसका आकार भी शामिल होता है, जिसका उपयोग आप गणनाओं के लिए कर सकते हैं, जिसमें बढ़ते विचार शामिल होते हैं। इन सूचनाओं के लिए पंजीकरण करना कीबोर्ड के बारे में कुछ प्रकार की जानकारी प्राप्त करने का एकमात्र तरीका है। सिस्टम कीबोर्ड से संबंधित घटनाओं के लिए निम्नलिखित सूचनाएं देता है:
* UIKeyboardWillShowNotification * UIKeyboardDidShowNotification * UIKeyboardWillHideNotification * UIKeyboardDidHideNotification
इन सूचनाओं के बारे में अधिक जानकारी के लिए, UIWindow क्लास संदर्भ में उनका विवरण देखें। कीबोर्ड को दिखाने और छिपाने के तरीके के बारे में जानकारी के लिए, टेक्स्ट और वेब देखें।
स्विफ्ट 3 कार्यान्वयन
import Foundation
class KeyboardStateListener: NSObject
{
static let shared = KeyboardStateListener()
var isVisible = false
func start() {
NotificationCenter.default.addObserver(self, selector: #selector(didShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(didHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}
func didShow()
{
isVisible = true
}
func didHide()
{
isVisible = false
}
}
कीबोर्ड दिखाने के लिए संकेत के रूप में विंडो सबव्यू पदानुक्रम का उपयोग करना एक हैक है। यदि Apple उनके अंतर्निहित कार्यान्वयन को बदल देता है तो ये सभी उत्तर टूट जाएंगे।
सही तरीका यह होगा कि आप कीबोर्ड शो की निगरानी करें और अपने ऐप डेलीगेट के अंदर नोटिफिकेशन एप्लिकेशन को चौड़ा करें।
AppDelegate.h में:
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (assign, nonatomic) BOOL keyboardIsShowing;
@end
AppDelegate.m में:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Monitor keyboard status application wide
self.keyboardIsShowing = NO;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification object:nil];
return YES;
}
- (void)keyboardWillShow:(NSNotification*)aNotification
{
self.keyboardIsShowing = YES;
}
- (void)keyboardWillBeHidden:(NSNotification*)aNotification
{
self.keyboardIsShowing = NO;
}
तो आप का उपयोग कर जाँच कर सकते हैं:
BOOL keyboardIsShowing = ((AppDelegate*)[UIApplication sharedApplication].delegate).keyboardIsShowing;
यह ध्यान दिया जाना चाहिए कि जब उपयोगकर्ता ब्लूटूथ या बाहरी कीबोर्ड का उपयोग कर रहा है तो कीबोर्ड शो / हिडन नोटिफिकेशन में आग नहीं लगेगी।
एक एक्सटेंशन जोड़ें
extension UIApplication {
/// Checks if view hierarchy of application contains `UIRemoteKeyboardWindow` if it does, keyboard is presented
var isKeyboardPresented: Bool {
if let keyboardWindowClass = NSClassFromString("UIRemoteKeyboardWindow"),
self.windows.contains(where: { $0.isKind(of: keyboardWindowClass) }) {
return true
} else {
return false
}
}
}
फिर जांचें कि क्या कीबोर्ड मौजूद है,
if UIApplication.shared.isKeyboardPresented {
print("Keyboard presented")
} else {
print("Keyboard is not presented")
}
guard let keyboardWindowClass = NSClassFromString("UIRemoteKeyboardWindow") else { return false }; return UIApplication.shared.windows.contains(where: { $0.isKind(of: keyboardWindowClass) })
यह यहाँ Apple द्वारा प्रकाशित iOS पाठ प्रोग्रामिंग गाइड से है: https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement.html
मूल रूप से अपने ViewDidLoad में "registerForKeyBoardNotifications" को कॉल करें। तब हर बार कीबोर्ड सक्रिय हो जाता है, "कीबोर्डवॉश" कहा जाता है। और हर बार जब कीबोर्ड गायब हो जाता है, तो "keyboardWillBeHidden" कहा जाता है।
// Call this method somewhere in your view controller setup code.
- (void)registerForKeyboardNotifications {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:) name:UIKeyboardWillHideNotification object:nil];
}
// Called when the UIKeyboardDidShowNotification is sent.
- (void)keyboardWasShown:(NSNotification*)aNotification {
NSLog(@"Keyboard is active.");
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
scrollView.contentInset = contentInsets;
scrollView.scrollIndicatorInsets = contentInsets;
// If active text field is hidden by keyboard, scroll it so it's visible
// Your app might not need or want this behavior.
CGRect aRect = self.view.frame;
aRect.size.height -= kbSize.height;
if (!CGRectContainsPoint(aRect, activeField.frame.origin) ) {
[self.scrollView scrollRectToVisible:activeField.frame animated:YES];
}
}
// Called when the UIKeyboardWillHideNotification is sent
- (void)keyboardWillBeHidden:(NSNotification*)aNotification {
NSLog(@"Keyboard is hidden");
UIEdgeInsets contentInsets = UIEdgeInsetsZero;
scrollView.contentInset = contentInsets;
scrollView.scrollIndicatorInsets = contentInsets;
}
अब iOS8 में यह समाधान काम नहीं करता है। यह शुरू में IOS4 / 5 के लिए लिखा गया था।
इस समाधान का प्रयास करें:
- (BOOL) isKeyboardOnScreen
{
BOOL isKeyboardShown = NO;
NSArray *windows = [UIApplication sharedApplication].windows;
if (windows.count > 1) {
NSArray *wSubviews = [windows[1] subviews];
if (wSubviews.count) {
CGRect keyboardFrame = [wSubviews[0] frame];
CGRect screenFrame = [windows[1] frame];
if (keyboardFrame.origin.y+keyboardFrame.size.height == screenFrame.size.height) {
isKeyboardShown = YES;
}
}
}
return isKeyboardShown;
}
कुछ अवलोकन:
एक सिंगलटन ऑब्जेक्ट के लिए अनुशंसित पैटर्न निम्नानुसार होगा। dispatch_once सुनिश्चित करता है कि एक थ्रेड-सुरक्षित तरीके से एक बार वर्ग को आरंभीकृत किया जाता है, और स्थिर चर बाहर दिखाई नहीं देता है। और यह मानक GCD है, इसलिए Objective-C के निम्न स्तर के विवरण के बारे में जानने की आवश्यकता नहीं है।
+ (KeyboardStateListener *)sharedInstance
{
static KeyboardStateListener* shared;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
shared = [[KeyboardStateListener alloc] init];
// Other initialisations
});
return shared;
}
आमतौर पर आप यह जानना नहीं चाहते हैं कि कीबोर्ड दिखाई दे रहा है या नहीं, लेकिन यह कितना बड़ा है। कीबोर्ड में सभी का आकार समान नहीं होता है। iPhone कीबोर्ड, iPad कीबोर्ड से छोटे होते हैं। तो आप एक और संपत्ति चाहते हैं @property (readonly, nonatomic) CGRect keyboardRect;
जो नोटिस में सेट है
NSValue* value = notification.userInfo [UIKeyboardFrameEndUserInfoKey];
_keyboardRect = value.CGRectValue;
यह ध्यान रखना महत्वपूर्ण है कि आयत UIWindow में समन्वयित है और स्क्रीन रोटेशन का सम्मान नहीं करता है। तो कॉलर उस आयत को कॉल करके परिवर्तित कर देगा
KeyboardStateListener* listener = [KeyboardStateListener sharedInstance];
CGRect windowRect = listener.keyboardRect;
CGRect viewRect = [myView convertRect:windowRect fromView:self.window];
यदि कीबोर्ड दिखाई देने के दौरान उपयोगकर्ता स्क्रीन को घुमाता है, तो एप्लिकेशन को बताया जाएगा कि कीबोर्ड छिपा हुआ है, फिर दिखाया गया है। जब यह दिखाया जाता है, तो अन्य विचारों को अभी तक घुमाए जाने की संभावना नहीं है। इसलिए यदि आप कीबोर्ड छिपाने / दिखाने की घटनाओं को स्वयं देखते हैं, तो निर्देशांक को तब परिवर्तित करें जब आपको वास्तव में उनकी आवश्यकता हो, अधिसूचना में नहीं।
यदि उपयोगकर्ता कीबोर्ड को विभाजित या अनडू करता है, या हार्डवेयर कीबोर्ड का उपयोग करता है, तो सूचनाएं हमेशा कीबोर्ड को छिपे हुए दिखाएंगी। कीबोर्ड को अनडॉक या मर्ज करने से "कीबोर्ड दिखाया गया" नोटिफिकेशन आएगा।
श्रोता को कीबोर्ड छिपाए जाने के दौरान आरंभीकृत किया जाना चाहिए, अन्यथा पहली अधिसूचना छूट जाएगी, और यह माना जाएगा कि कीबोर्ड छिपा हुआ है जब यह नहीं है।
इसलिए यह जानना काफी महत्वपूर्ण है कि आप वास्तव में क्या चाहते हैं। यह कोड कीबोर्ड के रास्ते से हटने के लिए उपयोगी है (एक विभाजित या अनकवर्ड कीबोर्ड के साथ, यह उपयोगकर्ता की जिम्मेदारी है)। यह आपको नहीं बताता है कि उपयोगकर्ता स्क्रीन पर एक कीबोर्ड देख सकता है (विभाजन कीबोर्ड के मामले में)। यह आपको नहीं बताता कि उपयोगकर्ता टाइप कर सकता है (उदाहरण के लिए जब कोई हार्डवेयर कीबोर्ड हो)। यदि ऐप स्वयं अन्य विंडो बनाता है तो अन्य विंडो को देखना काम नहीं करता है।
स्विफ्ट कार्यान्वयन:
class KeyboardStateListener: NSObject
{
static var shared = KeyboardStateListener()
var isVisible = false
func start() {
let nc = NSNotificationCenter.defaultCenter()
nc.addObserver(self, selector: #selector(didShow), name: UIKeyboardDidShowNotification, object: nil)
nc.addObserver(self, selector: #selector(didHide), name: UIKeyboardDidHideNotification, object: nil)
}
func didShow()
{
isVisible = true
}
func didHide()
{
isVisible = false
}
}
क्योंकि स्विफ्ट स्टार्टअप पर क्लास लोड विधि को निष्पादित नहीं करता है, इसलिए इस सेवा को ऐप लॉन्च पर शुरू करना महत्वपूर्ण है:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool
{
...
KeyboardStateListener.shared.start()
}
यह मेरा समाधान है, यह सब कुछ एक ही स्थिर विधि में संलग्न करता है, और आप इसे कहीं भी जांचने के लिए कह सकते हैं:
+(BOOL)isKeyboardVisible{
static id tokenKeyboardWillShow = nil;
static id tokenKeyboardWillHide = nil;
static BOOL isKbVisible = NO;
@synchronized (self) {
if (tokenKeyboardWillShow == nil){
tokenKeyboardWillShow = [[NSNotificationCenter defaultCenter] addObserverForName:UIKeyboardWillShowNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {
@synchronized (self) {
isKbVisible = YES;
}
}];
}
if (tokenKeyboardWillHide == nil){
tokenKeyboardWillHide = [[NSNotificationCenter defaultCenter] addObserverForName:UIKeyboardWillHideNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {
@synchronized (self) {
isKbVisible = NO;
}
}];
}
}
return isKbVisible;
}
और यहाँ यह स्विफ्ट में कैसे करना है:
func registerForKeyboardNotifications() {
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "keyboardWasShown:",
name: UIKeyboardDidShowNotification,
object: nil)
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "keyboardWillBeHidden:",
name: UIKeyboardWillHideNotification,
object: nil)
}
func keyboardWasShown(notification: NSNotification) {
println("Keyboard was shown");
}
func keyboardWillBeHidden(notification: NSNotification) {
println("Keyboard was dismissed");
}
अपंजीकृत करने के लिए मत भूलना:
override func viewWillDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().removeObserver(self,
name: UIKeyboardDidShowNotification,
object: nil)
NSNotificationCenter.defaultCenter().removeObserver(self,
name: UIKeyboardWillHideNotification,
object: nil)
}
और यदि आप "रिटर्न" बटन दबाने पर कीबोर्ड को खारिज करना चाहते हैं:
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var yourTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
registerForKeyboardNotifications()
yourTextField.delegate = self
}
func textFieldShouldReturn(textField: UITextField!) -> Bool {
self.view.endEditing(true);
return false;
}
}
इस फ़ंक्शन का प्रयास करें
BOOL UIKeyboardIsVisible(){
BOOL keyboardVisible=NO;
// Locate non-UIWindow.
UIWindow *keyboardWindow = nil;
for (UIWindow *testWindow in [[UIApplication sharedApplication] windows]) {
if (![[testWindow class] isEqual:[UIWindow class]]) {
keyboardWindow = testWindow;
break;
}
}
// Locate UIKeyboard.
for (UIView *possibleKeyboard in [keyboardWindow subviews]) {
// iOS 4 sticks the UIKeyboard inside a UIPeripheralHostView.
if ([[possibleKeyboard description] hasPrefix:@"<UIPeripheralHostView"]) {
keyboardVisible=YES;
}
if ([[possibleKeyboard description] hasPrefix:@"<UIKeyboard"]) {
keyboardVisible=YES;
break;
}
}
return keyboardVisible;
}
BOOL है TxtOpen = [txtfieldObjct isFirstReponder]। यदि यह YES देता है, तो कीबोर्ड सक्रिय है।
मौसम कीबोर्ड दिखाई देने के लिए, हम कीबोर्ड पूर्वनिर्धारित सूचनाओं का उपयोग कर सकते हैं।
UIKeyboardDidShowNotification, UIKeyboardDidHideNotification
उदाहरण के लिए मैं कीबोर्ड अधिसूचना को सुनने के लिए निम्न कोड का उपयोग कर सकता हूं
// कीबोर्ड दिखावे और गायब होने के लिए सुनो
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardDidShow:)
name:UIKeyboardDidShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardDidHide:)
name:UIKeyboardDidHideNotification
object:nil];
विधियों में मुझे सूचनाएं मिल सकती हैं
- (void)keyboardDidShow: (NSNotification *) notifyKeyBoardShow{
// key board is closed
}
- (void)keyboardDidHide: (NSNotification *) notifyKeyBoardHide{
// key board is opened
}
स्विफ्ट 4
extension UIViewController {
func registerKeyboardNotifications() {
let center = NotificationCenter.default
center.addObserver(self, selector: #selector(keyboardWillBeShown(note:)), name: Notification.Name.UIKeyboardWillShow, object: nil)
center.addObserver(self, selector: #selector(keyboardWillBeHidden(note:)), name: Notification.Name.UIKeyboardWillHide, object: nil)
}
func removeKeyboardNotifications() {
NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}
@objc
func keyboardWillBeShown(note: Notification) {}
@objc
func keyboardWillBeHidden(note: Notification) {}
}
final class MyViewController: UIViewController {
// MARK: - Properties
var isKeyboardVisible = false
// MARK: - Life Cycle
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
registerKeyboardNotifications()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
removeKeyboardNotifications()
}
// MARK: - Keyboard Handling
override func keyboardWillBeShown(note: Notification) {
isKeyboardVisible = true
let userInfo = note.userInfo
let keyboardFrame = userInfo?[UIKeyboardFrameEndUserInfoKey] as! CGRect
let contentInset = UIEdgeInsetsMake(0.0, 0.0, keyboardFrame.height, 0.0)
tableView.contentInset = contentInset
}
override func keyboardWillBeHidden(note: Notification) {
tableView.contentInset = .zero
isKeyboardVisible = false
}
// MARK: - Test
fileprivate func test() {
if isKeyboardVisible { // do something
}
}
}
आप यह देखने के लिए कि क्या कोई ऐसा पहला रेस्पोंडर है, किसी अभिभावक के साक्षात्कार में सभी पाठ्यपुस्तकों, टेक्स्टफील्ड्स, और लेबलों को पुनरावृत्त कर सकता है:
-(BOOL)isKeyboardActiveInView:(UIView *)view {
for (UIView *anyView in [view subviews]) {
if ([anyView isKindOfClass:[UITextField class]]) {
if (((UITextField *)anyView).isFirstResponder) {
return YES;
}
} else if ([anyView isKindOfClass:[UILabel class]]) {
if (((UILabel *)anyView).isFirstResponder) {
return YES;
}
} else if ([anyView isKindOfClass:[UITextView class]]) {
if (((UITextView *)anyView).isFirstResponder) {
return YES;
}
} else {
if ([self isKeyboardActiveInView:anyView]) {
return YES;
}
}
}
return NO;
}
स्विफ्ट 4.2 / स्विफ्ट 5
class Listener {
public static let shared = Listener()
var isVisible = false
// Start this listener if you want to present the toast above the keyboard.
public func startKeyboardListener() {
NotificationCenter.default.addObserver(self, selector: #selector(didShow), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(didHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}
@objc func didShow() {
isVisible = true
}
@objc func didHide(){
isVisible = false
}
}
मुझे लगता है कि इससे आपको मदद मिल सकती है,
+(BOOL)isKeyBoardInDisplay {
BOOL isExists = NO;
for (UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows]) {
if ([[keyboardWindow description] hasPrefix:@"<UITextEffectsWindow"] == YES) {
isExists = YES;
}
}
return isExists;
}
धन्यवाद,
नवीन शान