Отключите лупу в UITextField

По предложению @ n.m. я проверил весь код. И я думаю, что нашел проблему. Упрощенный конструктор / деструктор класса и манипулирование следующим образом:

#include <iostream>                                 
#include <vector>                                 
#include <string.h>                                 
using namespace std;                                

struct leak_struct {
    vector<string> array;
    int set;
};

int main(){                                
    leak_struct ls;                                

    ls.array.push_back("hello");                                
    ls.array.push_back("world");                                

    memset(&ls, 0, sizeof(ls));

    ls.array.push_back("code");                                
    ls.array.push_back("review");                                

    memset(&ls, 0, sizeof(ls));
    return 0;                                
}    

Причина, по которой он пропускает, заключается в строке, где вызывается memset, этот вызов обнулит указатель вектора в структуре и делает новый выделенный буфер не освобожденным. .

6
задан Meltemi 14 May 2009 в 22:30
поделиться

2 ответа

Невозможно предотвратить перемещение курсора. Однако вы можете запретить им редактировать текст, кроме как в конце, реализовав метод

- textField: shouldChangeCharactersInRange: replaceString:

в делегате текстового поля.

Изменить: вы также можете установить userInteractionEnabled - НЕТ , чтобы пользователь не мог коснуться поля. Вызовите статьFirstResponder вручную, чтобы поле стало фокусом, поскольку пользователь не может нажать, чтобы сфокусироваться.

1
ответ дан 8 December 2019 в 17:26
поделиться

Я не проверял, можно ли отключить увеличительное стекло, но рекомендуемый способ выборочного отключения режима редактирования в UIResponder (и, следовательно, в UITextField) - реализовать canPerformAction: withSender из UIResponder .

См. документацию UIResponder .

Возможно, если вы вернете «NO» для действия select и selectAll, вы сможете отключить его.

Другой, более жестокий способ - перехватить любое событие касания и сбросить курсор до конца.

0
ответ дан 8 December 2019 в 17:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: