تعطيل فواصل سطر خيار ENTER في NSTEXTFILD؟
-
06-09-2019 - |
المحلول
يمكنك إنشاء فرعية من NSFormatter وتنفيذ ISPartialStringValid: ... طريقة لمنع Newline.
- (BOOL)isPartialStringValid:(NSString **)partialStringPtr
proposedSelectedRange:(NSRangePointer)proposedSelRangePtr
originalString:(NSString *)origString
originalSelectedRange:(NSRange)origSelRange
errorDescription:(NSString **)error
{
// the user may have:
// -- deleted the left most character
// -- deleted the last character and we have an empty string
// both cases are valid
if (proposedSelRangePtr->location == 0)
return YES;
unichar theChar = [*partialStringPtr characterAtIndex:proposedSelRangePtr->location - 1];
if ([[NSCharacterSet newlineCharacterSet] characterIsMember:theChar]) {
*error = nil;
NSBeep();
return NO;
}
return YES;
}
نصائح أخرى
هل لي أن أسأل لماذا ترغب في تعطيل هذه الميزة؟ إنه جزء قياسي جدا من نظام التشغيل. ضع في اعتبارك أن المستخدم قد لصق جيدا في بعض السلسلة من مكان آخر يحتوي على استراحة سطر وسيتم بعد ذلك تعديل احتياجاتهم. هل سيكون من الأفضل ترك هذه الميزة سليمة، ولكن استخدم NSFormatter لتخليص كل شيء بعد كسر الخط عندما حان الوقت لنسخ القيمة من العرض إلى النموذج؟
لا تنتمي إلى StackOverflow