Swift 4,
Я написал расширение UITextView в swift 4, чтобы сделать код многоразовым. Также отлично работает с копировальной пастой.
private var maxLengths = [UITextView: Int]()
extension UITextView : UITextViewDelegate {
@IBInspectable var maxLength: Int {
get {
guard let length = maxLengths[self]
else {
return Int.max
}
return length
}
set {
maxLengths[self] = newValue
self.delegate = self
}
}
@objc func limitLength(textView: UITextView) {
guard let prospectiveText = textView.text,
prospectiveText.count > maxLength
else {
return
}
let selection = selectedTextRange
let maxCharIndex = prospectiveText.index(prospectiveText.startIndex, offsetBy: maxLength)
text = String(prospectiveText[.. Bool {
scrollToBottom()
return true
}
public func textViewShouldEndEditing(_ textView: UITextView) -> Bool {
scrollToBottom()
return true
}
func scrollToBottom() {
let location = text.count - 1
let bottom = NSMakeRange(location, 1)
self.scrollRangeToVisible(bottom)
}
}
Установите значение максимальной длины в раскадровке,
Вы не можете сделать это, используя чистый PHP. Вы можете попробовать что-то вроде:
function test($var1 = null, $var2 = null){
if($var1 == null) $var1 = 'default1';
if($var2 == null) $var2 = 'default2';
}
, а затем вызвать свою функцию с null
в качестве идентификатора переменной по умолчанию. Вы также можете использовать массив со значениями по умолчанию, что будет проще с большим списком параметров.
Еще лучше попытаться избежать всего этого и немного пересмотреть свой дизайн.
Параметры со значениями по умолчанию должны быть последними после других в PHP, а все остальные до этого момента должны быть заполнены при вызове функции. Я не знаю, как передать значение, которое запускает значение по умолчанию.
Обычно в таких ситуациях я указываю параметры в виде массива вместо. Взгляните на следующий пример (непроверенный):
<?php
test(array('t3' => 'something'));
function test($options = array())
{
$default_options = array('t1' => 'test1', 't2' => 'test2', 't3' => 'test3');
$options = array_merge($default_options, $options);
echo $options['t1'] . ', ' . $options['t2'] . ', ' . $options['t3'];
}
?>
Использовать массивы:
function test($options = array()) {
$defaults = array(
't1' => 'test1',
't2' => 'test2',
't3' => 'test3',
);
$options = array_merge($defauts, $options);
extract($options);
echo "$t1, $t2, $t3";
}
Вызов функции следующим образом:
test(array('t3' => 'hi, i am different'));