mi primera vista personalizada no se desplaza
Frecuentes
Visto 403 equipos
0
Tenía una vista de texto y estaba tomando un chat que venía de Internet y lo estaba imprimiendo, pero quería más colores de los que tenía una vista de texto para formatear el chat.
Reemplacé la vista de texto con una vista de desplazamiento y en viewdidload intenté (parecía funcionar) adjuntar mi clase de vista.
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_myconsoleview = [[ConsoleView alloc] initWithFrame:[self._scview bounds]];
[_myconsoleview setBackgroundColor: [UIColor yellowColor]];
[self._scview addSubview:_myconsoleview];
[self._scview setNeedsDisplay];
}
bueno, como el texto llegó al final, no se desplazó (traté de arrastrar el texto con el mouse y busqué las barras de desplazamiento).
por lo que este ejemplo de programa de texto central dice oh, eso es fácil de obtener desplazamiento. simplemente haga que mi vista personalizada (ConsoleView) herede la vista de desplazamiento. Así que intento esto y agrego esto ahora:
@interface ConsoleView :UIScrollView<UIScrollViewDelegate>
todavía no hay desplazamiento. sin barras de desplazamiento. ninguna indicación y estoy usando el simulador de ipad hasta ahora, de cualquier tipo de desplazamiento. En ConsoleView, quiero hacer algo muy pulido eventualmente, pero por ahora solo estoy imprimiendo una sola cadena. Pero la cadena se hace más larga a medida que obtengo más texto a medida que lo agrego.
Intenté esto en mi método de envío de texto. esto sucede cuando presionan un botón para enviar el texto que escriben en este campo de texto al servidor:
[myconsoleviewid addNewText:newText];
[_scview scrollRectToVisible:[_scview bounds] animated: TRUE];
[_scview setNeedsDisplay];
Honestamente, no estoy seguro de poder afirmar que lo anterior funcionaría, pero pensé que algo podría funcionar. ¿algunas ideas? Soy bastante nuevo en la programación de ios, comencé hace aproximadamente 2 meses y trabajé en él de vez en cuando hasta ahora. En Java o Android, no parece haber mucho más para hacer que una consola se desplace que agregarla a algún control de desplazamiento. Pero IOS está resultando más complicado.
Mike
editar. este es mi rectángulo de dibujo que se supone que debe imprimir la cadena que se hace más y más larga. está en vista de consola:
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
CGContextTranslateCTM(context, 0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0); CGMutablePathRef path = CGPathCreateMutable(); //1
CGPathAddRect(path, NULL, self.bounds );
CTFramesetterRef framesetter =
CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)attString); //3
CTFrameRef frame =
CTFramesetterCreateFrame(framesetter,
CFRangeMake(0, [attString length]), path, NULL);
CTFrameDraw(frame, context); //4
CFRelease(frame); //5
CFRelease(path);
CFRelease(framesetter);
}
2 Respuestas
0
El tamaño del contenido de ScrollView debe ser más grande que el marco de ScrollView para permitir el desplazamiento. Establezca esta propiedad correctamente y debería estar bien.
Respondido 31 Jul 12, 15:07
0
Necesitas configurar scrollView.contentSize
con el tamaño adecuado del área desplazable.
scrollView.contentSize = CGSizeMake(640, 320); // if you are in full screen and have two view one to other in horizontal
// para el desplazamiento vertical que necesita hacer
scrollView.contentSize = CGSizeMake(320, 640);
Estos ejemplos son solo para el desplazamiento horizontal o vertical en una dirección si establece el tamaño del contenido más grande que el tamaño del marco de la vista si se podrá desplazar.
Respondido 31 Jul 12, 15:07
si simplemente estoy imprimiendo una cadena larga, ¿cómo sé el tamaño? La cadena solo tiene texto y tiene \n caracteres. También en este punto tengo dos vistas de desplazamiento, supongo. el que arrastré al guión gráfico y la vista que le adjunté, que también es una vista de desplazamiento. ¿Importa cuál establezco el tamaño de? - LinternaMike
Debe establecer el tamaño del contenido de la vista de desplazamiento y, para que el tamaño del contenido se pueda desplazar, debe ser mayor que el tamaño del marco de UIView. Porque ese scrollView está en UIView. - h4cky
solo quiero desplazamiento vertical, así que agregué _scview.contentSize = CGSizeMake (320, 1040);. Hice esto en mi vista de desplazamiento general. Hice mi vista, la adjunté solo a UIView. bueno, tengo un fondo amarillo en mi vista y cuando me desplazo ahora, el fondo cambia a blanco y no hay texto. ¿Adjunté mal la vista? cuando configuré el tamaño del contenido de mi vista de consola antes de convertirlo en una vista de interfaz de usuario, también obtuve algo de desplazamiento, pero aún no se imprimió texto nuevo debajo del punto de parada inicial del texto o una pantalla. - LinternaMike
Su ViewController tiene vista, luego de eso agrega su scrollView a esa vista. ¿Qué usas para mostrar el texto UITextView? - h4cky
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas objective-c ios ipad ios5 or haz tu propia pregunta.
si configuro el tamaño general del contenido de la vista de desplazamiento en 20000 verticales, mi fondo amarillo se detiene en una página, por lo que parece incorrecto. Si configuro mi vista, que es una vista de desplazamiento, como 2000 vertical, se desplaza, veo mi fondo amarillo, mi vista persiste, pero el texto aún deja de mostrarse después de la última línea de la página uno. - LinternaMike
Vi que no había aceptado una respuesta. Terminé cambiando el código de texto principal, pero aún con el problema del desplazamiento, descubrí que este era el truco, el tamaño del contenido era al menos uno más grande, aceptando esta respuesta. - LinternaMike